【问题标题】:How to download a KML file from Google Maps API via "mid" param?如何通过“mid”参数从 Google Maps API 下载 KML 文件?
【发布时间】:2020-02-06 03:10:42
【问题描述】:
我正在做一个应用程序,我想下载由“mid”参数引用的 Google 地图的 KML 文件,例如 this:https://www.google.com/maps/d/u/0/viewer?mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E
我可以点击“三点按钮”>“下载 KML 文件”手动下载它,但我想自动化这个过程。
还有办法吗?
【问题讨论】:
标签:
google-maps
google-maps-api-3
kml
【解决方案1】:
将http://www.google.com/maps/d/kml?forcekml=1&mid=放在唯一标识符之前:
http://www.google.com/maps/d/kml?forcekml=1&mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E
(相关问题:
Render a My Maps using Google Maps JavaScript API)
代码 sn-p 在地图上显示该 KML:
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: 'http://www.google.com/maps/d/kml?forcekml=1&mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E',
map: map
});
}
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
<div id="map"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
【解决方案2】:
看起来这是 Google 我的地图(不是 Google Maps API)。
这将为您提供 KMZ 版本(压缩):
https://www.google.com/maps/d/u/0/kml?mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E
这将为您提供 KML 版本(未压缩,不支持所有图标):
https://www.google.com/maps/d/u/0/kml?mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E&forcekml=1
这将为您提供 KMZ 中的网络链接:
https://www.google.com/maps/d/u/0/kml?mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E&nl=1
这将为您提供 KML 中的网络链接:
https://www.google.com/maps/d/u/0/kml?mid=1Mdlz2iXu_iZCPhUhzKvT2B2j-6E&nl=1&forcekml=1
【讨论】:
-
您是否知道如何/是否可以使用google.com/maps/d/u/0/… 在跨域服务器上使用 javascript 从 Google 我的地图访问 KML 文件?我希望能够解析 kml 文件。我已经尝试过,但被 CORS 阻止了。知道任何可靠的解决方法吗?