使用Google Maps API時,是否有任何方法可以通過KML文件創建「邊欄」?訪問Google地圖中的KML標記
我使用這樣的裝載地圖上的標記:
var myMarkerLayer = new google.maps.KmlLayer('http://example.com/WestCoast.kml');
這個偉大的工程,到目前爲止,但我怎麼能搶,通過這些點的數據和循環?
我想避免使用第三方庫,如果可能的話 - 雖然jQuery是好的。
使用Google Maps API時,是否有任何方法可以通過KML文件創建「邊欄」?訪問Google地圖中的KML標記
我使用這樣的裝載地圖上的標記:
var myMarkerLayer = new google.maps.KmlLayer('http://example.com/WestCoast.kml');
這個偉大的工程,到目前爲止,但我怎麼能搶,通過這些點的數據和循環?
我想避免使用第三方庫,如果可能的話 - 雖然jQuery是好的。
KML只是一個XML文檔,所以你可以使用jQuery來處理它,以提取你需要的數據。您可以將座標和地名存儲在本地數組中,並將這些數據用於您想要的任何目的,例如。當用戶點擊側邊欄上的地名時,您可以使用它導航到地圖上的某個點。
下面是一個關於如何處理KML文件並基於文件中的數據實現導航的示例..謹慎的一句話我不會對大型KML文件做這件事,因爲它會加載加載時間(瀏覽器有加載文件以處理特徵)...
<script type="text/javascript" src= "http://maps.google.com/maps/api/js?sensor=false">
</script>
<script src="../js/jquery-1.4.2.min.js">
</script>
<script>
var map;
var nav = [];
$(document).ready(function(){
//initialise a map
init();
$.get("kml.xml", function(data){
html = "";
//loop through placemarks tags
$(data).find("Placemark").each(function(index, value){
//get coordinates and place name
coords = $(this).find("coordinates").text();
place = $(this).find("name").text();
//store as JSON
c = coords.split(",")
nav.push({
"place": place,
"lat": c[0],
"lng": c[1]
})
//output as a navigation
html += "<li>" + place + "</li>";
})
//output as a navigation
$(".navigation").append(html);
//bind clicks on your navigation to scroll to a placemark
$(".navigation li").bind("click", function(){
panToPoint = new google.maps.LatLng(nav[$(this).index()].lng, nav[$(this).index()].lat)
map.panTo(panToPoint);
})
});
function init(){
var latlng = new google.maps.LatLng(-43.552965, 172.47315);
var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
}
})
</script>
<html>
<body>
<div id="map" style="width:600px;height: 600px;">
</div>
<ul class="navigation">
</ul>
</body>
</html>
這是不可能的。檢查文檔: http://code.google.com/apis/maps/documentation/javascript/overlays.html#KMLLayers
在「KML特徵數據」:
由於KML可包括大量的功能,您可能無法按KmlLayer對象直接訪問特徵數據。相反,當功能顯示時,它們呈現爲可點擊的Maps API疊加層。
由於跨域安全限制,此方法將要求kml文件與地圖頁面存在於相同的域中。而使用本地谷歌地圖KmlLayer將允許外部kmls加載。 – Sean 2012-09-03 02:31:35
請注意,此方法簡單地解決了原生KMLLayer的缺點,它不會給您任何選項來從KML獲取更多數據,但這並不是要取代它,只是一種處理XML文檔的方法。 – Michal 2012-09-03 20:44:32
你好 我知道這個問題很舊,但使用這種方法從kml文件中提取數據後,我發現它給了我一個錯誤。 nav未定義; 所以你需要添加var nav = [];在使用nav變量之前。 – JonnyDevv 2014-03-03 12:10:36