Ho usato i file KML in passato per sovrapporre i poligoni sulle pagine web.
Vorrei suggerire la lettura googles KML tutorials
- creare una funzione per leggere dal database
- Creare file KML
- chiamata KML file da Google API
Mentre KML vi fornirà un modo rapido e semplice per sovrapporre le forme, Google pone un limite al numero di elementi visualizzati.
Quanto segue dovrebbe aiutarti a iniziare con l'approccio KML.
public ActionResult Kml()
{
DataAccess da = new DataAccess();
string cellColor = "0032FB";
string kml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<kml xmlns=""http://earth.google.com/kml/2.1"">
<Document>
<Style id="polygon">
<LineStyle>
<color>FF" + cellColor + @"</color>
</LineStyle>
<PolyStyle>
<color>44" + cellColor [email protected]"</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
</Style>
<name>some name</name>
<description>some des</description>
";
DataTable polygons;
foreach (DataRow polygon in polygons.Rows)
{
kml += @"
<Placemark>
<name>"somename @"</name>
<description><![CDATA[<p>some text</p>]]></description>" +
@"<styleUrl>#polygon</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>clampToSeaFloor</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>" +
polygon["Cell Limit Longitude West"].ToString() + "," + polygon["Cell Limit Latitude North"].ToString() + " " +
polygon["Cell Limit Longitude East"].ToString() + "," + polygon["Cell Limit Latitude North"].ToString() + " " +
polygon["Cell Limit Longitude East"].ToString() + "," + polygon["Cell Limit Latitude South "].ToString() + " " +
polygon["Cell Limit Longitude West"].ToString() + "," + polygon["Cell Limit Latitude South "].ToString() + " " +
polygon["Cell Limit Longitude West"].ToString() + "," + polygon["Cell Limit Latitude North"].ToString() + " " +
@"</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
";
}
kml += @"</Document>
</kml>";
byte[] data = Encoding.ASCII.GetBytes(kml);
return File(data, "application/vnd.google-earth.kml+xml", id);
}
Javascript
var url = 'http://www.example.com/AppName/GMap/file.kml &rand=' + Math.random();
layer_paperCharts = new google.maps.KmlLayer(url);
if (loadedonce) {
layer_paperCharts.set('preserveViewport', true);
} else {
loadedonce = true;
}
layer_paperCharts.setMap(map);
file di Google Cache KML così l'aggiunta del Math.random() otterrà intorno a questo.
Si potrebbe anche guardare Fusion Tables. Tuttavia, devi caricare i tuoi dati su Google. Anche Google raggruppa i dati presentati. Ma tu vuoi SQL quindi questa opzione potrebbe non essere disponibile per te.
fonte
2012-04-03 10:20:45
Mi rendo conto che questo è un po 'pignolo - ma dovresti illustrare l'uso corretto delle dichiarazioni USING in risposte come queste. Soprattutto in questo caso d'uso, non ritengo che il corretto smaltimento degli oggetti possa portare a una significativa perdita di memoria. – Wjdavis5