AJAX JQuery加载KML层

时间:2014-03-04 14:22:15

标签: jquery ajax google-maps kml

我正在尝试使用JQuery AJAX请求将KML图层用于Google Maps API 3.0。这是我到目前为止(不工作)。

<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>

Google Maps API文档中的示例只是将cta.kml文件分配给url。我想要做的是用AJAX请求的结果替换它。

我觉得这是可能的,因为console.log(data)的结果会读取它最终需要的内容。

谢谢!

1 个答案:

答案 0 :(得分: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>