如何在位置中获得地图类型的最大缩放
How to get max zoom for maptype in location
在谷歌地图的JS API参考页面上,它说方法getMaxZoomAtLatLng
:
返回特定LatLng下可用于的最大缩放级别卫星地图类型。
出于某种原因,卡尔加里的地形地图类型在15级时垫底(例如),但卫星地图类型可以一直到缩放19。我有两个地图服务同时运行,我希望地图同步,但如果不能达到相同的缩放级别,它们就无法同步。
所以,基本上我想知道地形图(或任何地图类型)何时无法应付,并触发一些特殊情况下的功能
是否有一种方法或替代方法可以获得特定地图类型的位置的最大缩放(因为上述方法仅适用于卫星)?
在此期间,我决定采用的一个解决方案是在我的ArcGIS地图上附加一个zoom-end
处理程序(使用传单也可以很容易地做到这一点),并在谷歌地图上附加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
}
});
如果谷歌地图被设置为Satellite,然后被更改,它也需要触发相同的检查,所以我强迫它执行另一个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());
}
});
希望这能帮助到别人,但实际上,我期待着看到比这更好的解决方案。如果谷歌的地图类型无法达到一定的缩放级别,那么仅仅启动一个函数似乎是一种非常复杂的方法。
相关文章:
- 更改高贴图的缩放级别
- 在不阻止默认行为的情况下检测IE10中的缩放
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 缩放Raphael/SVG容器以适应所有内容
- 传单缩放控制位置错误
- 在不移动内部文本的情况下缩放元素的效果
- 调整缩放窗口高度提升缩放
- 计算CSS3缩放框在另一个框中的最高位置
- D3.JS向rect添加缩放和列表项
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 将直流图表库中的折线图缩放限制为小时
- 为什么缩放按钮不会显示在照片擦除中
- 动态设置谷歌地图缩放
- 从输入[类型=文件]缩放图像
- 修改谷歌地图类型的最大缩放级别
- 根据缩放级别更改列数:HighChart(柱形图类型)
- 改变地图类型的缩放变化与用户的鼠标
- 如何在位置中获得地图类型的最大缩放
- [Vue warn]:道具“;缩放“;应为双向绑定类型.(在组件中找到:<map>)
- D3 缩放类型错误: t.apply 不是一个函数