Google Map API中需要更深的缩放

时间:2013-09-12 22:44:45

标签: javascript google-maps google-maps-api-3

我们正在谷歌地图上开发一个GIS应用程序(使用谷歌地图API v3),但是应用程序要求用户放大,因为一些地图对象很小(低至约1米),并且需要图形编辑。

在Google Map API中扩展缩放范围的最佳方法是什么,可能缩放到30级?我们可以实现一个在Googles tileserver达到限制时“接管”的磁贴服务器吗?或者让谷歌地图API使用图形放大来缩放水平超出它的数据?还有其他可能的方法吗?

使用Hybrit或卫星地图时,这个问题尤其麻烦,因为它们的缩放级别较浅(我们的位置似乎大约为18)。

下图显示了最深的缩放以及它的不足之处: enter image description here

/马格努斯

3 个答案:

答案 0 :(得分:0)

扩展缩放范围的方法是创建自定义MapType。然后,您可以指定minZoommaxZoom。如果你的地图图块是普通图像,你可以使用ImageMapType来为你做一些簿记。或者,如果有必要,您可以选择完整的自定义MapType

这是example of an ImageMapType,具有自定义缩放级别和图像切片。

答案 1 :(得分:0)

以下是我最终解决的问题。不是一个完美的解决方案,但足以满足我的目的:

  • 创建并添加自定义地图类型,但只有空白图块,但具有较高的最大缩放。
  • 在谷歌获取之前勾住鼠标轮事件(请参阅此处:Hooking into mousewheel event in Google Map API
  • 使用鼠标滚轮放大时,检查是否在maxZoom,如果是,则切换到空白地图(并标记为在缩小时切换回来)。由于鼠标滚轮在谷歌获取之前,即使更改了地图类型,缩放也不会中断。

最大的问题是确定地图是否处于最大缩放状态(MaxZoomService仅适用于卫星图像)。我最终得到了一个非常丑陋的解决方案:在变焦控制中检查zoon-handle的位置: - )

答案 2 :(得分:0)

这可能比用于查看滚动条的代码更好,因为在可能不同的小屏幕上。

如果变焦没有变化,则表示谷歌处于最大变焦状态。

var wheelEvent = function() {
    console.log('zoom before', map.getZoom());
    setTimeout(function() {
      return console.log('zoom after', map.getZoom());
    }, 0);
  };
})(this);

$('#map-canvas')[0].addEventListener('mousewheel', wheelEvent, true);
$('#map-canvas')[0].addEventListener('DOMMouseScroll', wheelEvent, true);