如何在Leaflet中加载Google Maps基础层(2018年6月之后)?

时间:2018-06-04 02:45:45

标签: google-maps leaflet maps

我的网站上有一张传单地图,使用Google卫星图像作为基本地图。 2018年6月11日之后,无法使用api密钥访问Google地图图块。目前可以使用以下javascript通过Leaflet JS访问切片。

googleSat = L.tileLayer('http://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',{
    maxZoom: 20,
    subdomains:['mt0','mt1','mt2','mt3']
});

如何在2018年6月11日之后使用我的api密钥继续访问Leaflet的地图图块?

1 个答案:

答案 0 :(得分:8)

仅通过指定未记录的 API的网址,从Google地图加载图块就是Google Maps terms of service。让我引用他们的话:

  
      
  1. 许可限制。
  2.         

    10.1管理限制。

         

    除通过服务外,无法访问API或内容。除非通过服务,否则您不会访问Maps API或内容。   例如,您不能访问地图图块或图像   界面或渠道(包括未记录的Google界面)   除了Maps API之外。

您还会注意到,development documentation(截至2018年6月初),瓷砖网址 已记录在案。

所做的事情是,每个Leaflet实例加载一个Google Map实例,同时保持地图大小和中心同步,并使用变异观察器监控Google Map实例加载一个磁贴,这样你就可以将它从Google Map DOM树中删除并放入Leaflet DOM树中(如果你只是使用棘手的CSS在Google Maps上显示Leaflet,最终你会遇到有关同步的问题两者的缩放动画。

如果这听起来太吓人了,请不要担心。 Leaflet.GoogleMutant为你做了所有繁重的工作。让我引用它的自述文件:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY" async defer></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@latest/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@latest/dist/leaflet.js"></script>
<script src='https://unpkg.com/leaflet.gridlayer.googlemutant@latest/Leaflet.GoogleMutant.js'></script>
var roads = L.gridLayer.googleMutant({ type: 'roadmap' }).addTo(map);

请注意,您的API密钥是一个非常明显的位置(这是您的主要担心),并且GoogleMutant仅使用公开(并记录)的API(您也应该担心,因为它&#39 ; s in the ToS)。