这是我的代码:
<html><head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 500px; width: 500px; }
</style>
<title>Map Your Reps</title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api /js?key={key}"></script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34, 92),
zoom: 7
};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var kmlUrl = "http://{HOST}/kml/file.kml";
var kmlOptions = {
suppressInfoWindows: true,
preserveViewport: false,
map: map
};
var kmlLayer = new google.maps.KmlLayer(kmlUrl, kmlOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<h1>Map</h1>
<div id="map-canvas"/>
</body></html>
由于某种原因,.kml 文件虽然可以公开访问,但 API 并未加载该文件。
我注意到 Chrome 开发者工具的网络选项卡中有以下请求:
https://maps.googleapis.com/maps/api/js/KmlOverlayService.GetOverlays?1shttp%3A%2F%2F{HOST}%2Fkml%2Ffile.kml&callback=_xdc_._9dx071&token=97074
响应是:/**/_xdc_._9dx071 && _xdc_._9dx071( [0,null,null,null,null,null,3,[["client","2"]]] )
当我加载其他 KML 文件时,此数据结构表示文件中的数据。
一些事实:
- 我的 HTML 文件和 KML 文件都位于 Amazon EC2 实例上并且可以公开访问...没有密码、HTTPS 或其他棘手的业务
- 我的 KML 文件未压缩...它是真实的 KML 文件
- 我的 KML 文件在 kmlvalidator.com 上验证
- 我的 KML 大小为 709K,包含多边形
- 不会生成任何错误消息,地图上也不会显示任何内容……除了地图本身。
如果我能得到任何帮助来找出此 KML 图层未加载的原因,我将不胜感激。
Thanks!