【发布时间】:2016-05-22 16:22:03
【问题描述】:
我想在我的地图上显示县线。我发现了几个 KML 转换后的人口普查数据作为各种分辨率但显示。
我创建了一个 Google 站点地图并上传了几个 KML,包括 Google 用作示例的 CTA.kml。 CTA(芝加哥)显示没有问题,所以我知道我的网站设置正确。但是当我链接到 gz_2010_us_050_00_20m.kml(来自美国人口普查局)或 cb_2014_us_county_20m.kml 时,什么都没有出现。
我认为 kml 格式对 Google 地图无效,但我没有收到错误或任何消息。它只是没有出现。
我包含了一个小测试脚本,我知道它是正确的,因为它是从 Google 窃取的。
如果是 KML 格式问题,有人知道美国县线的 KML 吗?
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<title>KML Layers</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 11,
center: {lat: 41.876, lng: -87.624}
});
var ctaLayer = new google.maps.KmlLayer({
url: 'https://sites.google.com/site/countykmltester/gz_2010_us_050_00_20m.kml',
map: map
});
google.maps.event.addListener(ctaLayer, "status_changed", function() {
alert( "Kml Status:"+ctaLayer.getStatus());
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?callback=initMap">
</script>
</body>
</html>
【问题讨论】:
-
在 KmlLayer 上触发 'status_changed' 事件时查看 KmlStatus。我怀疑它是“DOCUMENT_TOO_LARGE”。请提供一个 Minimal, Complete, Tested and Readable example 来证明您的问题 (your posted code returns "OK")。
-
我已将文件更改为给我问题的文件。我还添加了一些 Changed Status 监听器,但是当我运行时,它不会返回任何内容。
-
It returns "INVALID_DOCUMENT" for me(您的代码正在写入
ctaLayer的innerHTML 属性,这没有任何用处)。 -
我收到了 INVALID_DOCUMENT 状态。是否有任何有效的县线 KML 文件?
-
我的猜测是文件太大,而不是无效,但我不确定。 KmlLayer 解析器似乎最近发生了变化,并且表明文档无效(根据 jEdit,您的文件是有效的)。
标签: google-maps google-maps-api-3 kml