在Google地图“JS API reference page上,它表示方法getMaxZoomAtLatLng
:
返回特定LatLng中可用的最大缩放级别 卫星地图类型。
出于某种原因,地形地图类型在卡尔加里的 15级处达到最低点(例如),但是卫星地图类型可以一直到 zoom 19 。我有两个地图服务同时运行,我希望地图同步,但如果它们无法达到相同的缩放级别,它们就无法同步。
所以,基本上我想知道地形图(或任何地图类型)何时无法应对,并触发一些特殊情况函数。
是否有方法或替代方法来获取特定地图类型的位置的最大缩放(因为上述方法仅适用于Satellite)?
答案 0 :(得分:0)
嗯,在此期间我决定采用的一个解决方案是将zoom-end
处理程序附加到我的ArcGIS地图(也可以使用Leaflet轻松完成此操作)和maptypeid_changed
谷歌地图的处理程序。
因此,对于ArcGIS地图(eMap
),我这样做了:
eMap.on('zoom-end', function (e) {
// map zooms are synced
gMap.setCenter(esri.geometry.webMercatorToGeographic(e.extent.getCenter()));
gMap.setZoom(e.level);
// if the google map couldn't do it, reset eMap
if (gMap.getZoom() !== e.level) {
eMap.setZoom(gMap.getZoom());
// runs the handler again
}
});
如果谷歌地图设置为卫星,然后更改,它还需要触发相同的检查,所以我强迫它执行另一个zoomEnd处理程序:
google.maps.event.addListener(gMap, 'maptypeid_changed', function () {
// for some reason, ESRI has issues setting zoom to current zoom
// so it has to run an initial check before calling zoomEnd
if (gMap.getZoom() !== eMap.getZoom()) {
eMap.setZoom(gMap.getZoom());
}
});
希望这对某人有所帮助,但实际上,我期待看到比这更好的解决方案。如果Google的地图类型无法达到某个缩放级别,这似乎只是一种非常复杂的方法来触发功能。