如何在 Leaflet JS 中使用 Google Geocoder 的 Viewport?

use*_*786 3 geocoding google-maps-api-3 leaflet

我已经成功设置了一个 Leaflet JS 地图,它使用 Google 地图地理编码器平移到地理编码地址。但我也尝试使用“map.fitBounds”从视口获取适当的缩放级别,但它似乎不起作用。我正在使用的代码是:

map.panTo([results[0].geometry.location.lat(),results[0].geometry.location.lng()]);
   map.fitBounds([[results[0].geometry.viewport.southwest.lat(), results[0].geometry.viewport.southwest.lng()],[results[0].geometry.viewport.northeast.lat(), results[0].geometry.viewport.northeast.lng()]]);
Run Code Online (Sandbox Code Playgroud)

请参阅此处的示例:http ://chrismccreath.hostzi.com/geocode_test.html

我该如何修复它,以便它缩放到谷歌地图地理编码器结果返回的适当视口?

Dr.*_*lle 5

没有类似的属性results[0].geometry.viewport.southwest/northeast(我猜您正在观察控制台内的网络流量,但您看到的内容不会直接传递给回调函数)。要获得西南/东北方向,请使用getSouthWest()getNorthEast()的方法google.maps.LatLngBounds

results[0].geometry.viewport是一个 google.maps.LatLngBounds 对象,但您不能直接在 Leaflet 中使用它。

您必须将其“转换”为数组或 Leaflet.LatLngBounds 对象。

这应该有效:

map.fitBounds([
               [results[0].geometry.viewport.getSouthWest().lat(),
                results[0].geometry.viewport.getSouthWest().lng()],
               [results[0].geometry.viewport.getNorthEast().lat(),
                results[0].geometry.viewport.getNorthEast().lng()]
              ]);
Run Code Online (Sandbox Code Playgroud)