【发布时间】:2014-02-10 14:25:10
【问题描述】:
尝试在我的应用程序中加载以下 KML 文件。我可以从浏览器本身访问该文件。但该文件未在谷歌地图中呈现。尝试检查 KML 图层状态,得到一个奇怪的结果为 "undefined"。我不知道我错过了什么。请帮我用谷歌地图学习KML层。
有趣的事实: Kml 图层已在谷歌地图中呈现,如果我使用了谷歌的 KML url http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml 。我不知道为什么谷歌地图从谷歌服务器渲染 KML 图层。以及为什么它没有从我的服务器渲染 KML 层 (http://www.mylocalIPAddress.com/WebModule/polygon.kml)。但我确信没有任何东西阻止我的 KML 文件。如果我在浏览器中点击了 URL。我可以查看文件。所以没有什么会阻止文件。但不知道为什么我无法加载我的 kml 文件。
KML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://developers.google.com/kml/documentation/images/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>
JavaScript:
google.maps.visualRefresh = true;
var map;
function initialize() {
// Specifies the google Map properties
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom : 3,
center : new google.maps.LatLng(0, 0),
mapTypeId : google.maps.MapTypeId.ROADMAP
});
var layer = new google.maps.KmlLayer('http://www.mylocalIPAddress.com/WebModule/polygon.kml');
layer.setMap(map);
console.log(layer.getStatus());
}
google.maps.event.addDomListener(window, 'load', initialize);
** 特别提示:** 检查谷歌链接的响应时,我得到以下内容
_xdc_._nox6ih && _xdc_._nox6ih( [0,"kml:cOyYrFGigX5u4USCpzso8ggEWKR7NP4TNfjRaORI","|ks:;dc:tb;ts:46343661|kv:3|api:3",["Chicago Transit Map","Chicago Transit Authority train lines","Chicago Transit Authority train lines"],[[41.721877,-87.8929],[42.072787,-87.606048]],[["gfd29185067c55f5f"],["g5e295bda04f08836"],["ga24949030bee7e8c"],["g55e98e4a4c0ba15f"],["g51d583df1e7a5451"],["g72b37441838ae58e"],["g4da782bd5142613c"],["ge63204f1f8e4087a"]],1,[["client","2"]],42,[["ks",";dc:tb;ts:46343661"],["kv","3"],["api","3"]]] )
当我再次检查服务器的响应时,我得到了以下信息
_xdc_._ghavva && _xdc_._ghavva( [0,null,null,null,null,null,4,[["client","2"]]] )
我不知道为什么我得到 null 作为响应。我相信由于空响应,谷歌地图无法呈现 KML 文件。
【问题讨论】:
-
所以没有任何东西阻止文件你怎么能确定? 该文件必须对所有人公开。当您能够从您的计算机加载该文件时,并不意味着所有人都可以访问该文件。检查您的防火墙设置,通常防火墙应该阻止此类请求(但可能允许来自您自己的网络)
标签: javascript google-maps google-maps-api-3 google-maps-markers kml