Tôi đã sử dụng tệp KML trong quá khứ để đa giác lớp phủ trên các trang web.
tôi sẽ đề nghị đọc Googles KML tutorials
- Tạo một chức năng để đọc từ cơ sở dữ liệu của bạn
- Tạo KML tập
- Gọi KML File từ Google API
Trong khi KML cung cấp cho bạn một cách nhanh chóng và dễ dàng để chồng hình, Google đặt giới hạn về số lượng mục được hiển thị.
Phần dưới đây sẽ giúp bạn bắt đầu với phương pháp tiếp cận 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);
Google Caches KML file nên việc bổ sung các Math.random() sẽ làm được việc này.
Bạn cũng có thể xem Fusion Tables. Tuy nhiên, bạn phải tải dữ liệu của mình lên Google. Ngoài ra Google nhóm dữ liệu được trình bày. Nhưng bạn muốn SQL để tùy chọn này có thể không có sẵn cho bạn.
Nguồn
2012-04-03 10:20:45
Tôi nhận thấy điều này hơi khó tính - nhưng bạn nên minh họa việc sử dụng đúng các câu lệnh USING trong các câu trả lời như thế này. Đặc biệt trong trường hợp sử dụng này, tôi cảm thấy không vứt bỏ đúng đối tượng của bạn có thể dẫn đến rò rỉ bộ nhớ đáng kể. – Wjdavis5