【问题标题】:Google Maps KML Layer won't read kml谷歌地图 KML 图层不会读取 kml
【发布时间】:2017-08-10 14:37:33
【问题描述】:

我正在尝试使用 Google Maps API 3 读取一个简单的 KML,我在 Google Maps Editor 中创建了 KML 文件,代码是 google 示例,我找不到问题所在。

gm-sample.html

BTM.kml

function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 13,
          center: {lat: 40.40926, lng: 49.86709}
        });

        var ctaLayer = new google.maps.KmlLayer({
          url: 'itdc.byethost7.com/BTM.kml',
          map: map
        });
      }

【问题讨论】:

  • 控制台有错误吗? KML 网址看起来不太好。
  • 如果你的意思是浏览器控制台我什么都看不到。
  • 服务器是否请求了 kml 文件?检查 Chrome DevTools 中的 Network 标签

标签: javascript google-maps-api-3 kml


【解决方案1】:

在 github.com 上为 KML 提供的链接使用 MIME 类型“text/plain”,它应该是 "application/vnd.google-earth.kml+xml"

3 种 KML MIME 类型
在响应来自 Google 地球(或任何地球浏览器)的请求时,KML 服务器必须遵循一组特定规则,以便 Google 地球能够正确解释其响应。

成功后,服务器必须返回 HTTP 200 响应代码并将响应的内容类型设置为合适的 MIME 类型,如此处所述。

Google 地球会读取 KML 和 KMZ 文件。 KML 文件的 MIME 类型是 应用程序/vnd.google-earth.kml+xml

KMZ 文件的 MIME 类型是
应用程序/vnd.google-earth.kmz

validator results:

建议

此提要有效,但可以通过实施以下建议来提高与最广泛提要阅读器的互操作性。

不应使用“text/plain”媒体类型提供 Feed

如果我将您的 KML 复制到我的服务器(使用正确的 MIME 类型提供 KML),it works

BTW - If I point the validator to the link in the code in your question, it doesn't work at all, it isn't a KML file,但如果我将 KmlLayer URL 指向那个,it also works

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2012-04-19
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多