我正在尝试使用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)
的结果会读取它最终需要的内容。
谢谢!
答案 0 :(得分:0)
这是不可能的。 KmlLayer的工作原理是让Google的服务器读取KML并将其呈现为磁贴(因此需要公开提供)。如果您想在本地加载它,您可以查看第三方KML解析器(如geoxml3或geoxml-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>