2014-03-04 98 views
0

我想通過使用JQuery AJAX請求將KML圖層應用到Google Maps API 3.0上。這是我到目前爲止(不工作)。AJAX JQuery加載KML圖層

<script> 
$(document).ready(function(){ 

$.ajax({ 
    url : 'https://blahhhhhhhhhh.com/KML_Placemarks.kml', 
    dataType : 'html', 
    success : function(data) { 
    console.log(data); 
    var Google = new google.maps.LatLng(37.42228990140251,-122.0822035425683); 
    var mapOptions = { 
     zoom: 18, 
     center: Google 
    } 

    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    var ctaLayer = new google.maps.KmlLayer({ 
    //url: 'http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml' 
    url: data 
    }); 

    ctaLayer.setMap(map); 
    console.log(data); 

    } 
    });       
}); 
</script> 

從谷歌地圖API文檔的例子只是有cta.kml文件分配給url件。我想要做的就是用AJAX請求的結果來替代它。

我覺得這是可能的,因爲console.log(data)的結果讀取它最終需要的內容。

謝謝!

回答

0

這是不可能的。 KmlLayer通過讓Google的服務器讀取KML並將其呈現爲貼圖(因此需要公開可用)而工作。如果您想在本地加載它,您可以查看第三方KML分析器(如geoxml3geoxml-v3)或自行展示以將數據呈現爲本地Google Maps JavaScript API v3對象,但會有性能提升。

這應該工作(如果「數據」是有效的KML和你的KML是不是太複雜):

<script> 
$(document).ready(function(){ 

$.ajax({ 
    url : 'https://blahhhhhhhhhh.com/KML_Placemarks.kml', 
    dataType : 'html', 
    success : function(data) { 
    console.log(data); 
    var Google = new google.maps.LatLng(37.42228990140251,-122.0822035425683); 
    var mapOptions = { 
     zoom: 18, 
     center: Google 
    } 

    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    var geoXml = new geoXML3.parser({ 
       map: map 
      }); 

    geoXml.parseKmlString(date); 

    ctaLayer.setMap(map); 
    console.log(data); 

    } 
    });       
}); 
</script> 
+0

我想這個解決方案。我已經將geoxmlfull_v3.js庫添加到了我的頁面,但它表示未定義geoXML3。我錯過了什麼嗎? – Tom

+0

我經常不使用geoxml-v3。聽起來你沒有正確地包含腳本。 – geocodezip