Google Maps API + Google Maps Engine / My Maps

4
我曾使用Google Maps Engine将定制的地图与图层和形状嵌入到我的网页中,但它即将停用,并且要被Google My Maps取代。Google My Maps更加轻便,但似乎能满足我的需求。
现在我的问题是:我正在使用Google Maps API在我的网页上显示地图,我也有来自My Maps的嵌入代码,我想把它们结合起来。因此,我想加载Google Maps API并显示我喜欢的任何区域,添加标记和所有内容,然后在上面(或下面)显示来自My Maps特定地图中的图层和形状。
正如我所说,我有嵌入代码,这个代码单独使用时可以工作,而地图ID的格式为“abcdefgh.abcdefgh”。
现在,在Google Maps API中查找,有一种(弃用的)“MapsEngineLayer”函数可以按ID加载特定的Maps Engine图层,但我没有找到任何方式可以找到我需要的My Maps中的特定图层ID,并且我想要一个mapId下的所有图层,但该函数需要一个layerId或LayerKey。
因此,是否有一种方法可以将“My Maps”中的地图包含在Google Maps API的普通显示中?
1个回答

15

你也可以下载一个名为KML的地图,下载链接类似于:

https://www.google.com/maps/d/kml?mid=themymaps.mapid

虽然它没有被文档化,但目前在我使用此URL创建一个KmlLayer时仍然有效(只要他们没有修改下载过程)。

示例(原始地图)

function initialize() {

  var map = new google.maps.Map(document.getElementById('map-canvas'), {
      zoom: 0,
      center: new google.maps.LatLng(0, 0)
    }),

    myMapsId = 'z4jtZiEBVczE.kp_M0KHEIung';
  new google.maps
    .KmlLayer({
      map: map,
      url: 'https://www.google.com/maps/d/kml?mid=' + myMapsId
    });
}

google.maps.event.addDomListener(window, 'load', initialize);
  html,
  body,
  #map-canvas {
    height: 100%;
    margin: 0px;
    padding: 0px
  }
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>


2
https://www.google.com/maps/d/kml?mid=themymaps.mapid 将会下载为KMZ格式。若要仅下载KML格式,请使用 https://www.google.com/maps/d/kml?mid=themymaps.mapid&forcekml=1 - Aurélien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接