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
我该如何修复它,以便它缩放到谷歌地图地理编码器结果返回的适当视口?
没有类似的属性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)