7

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

将 Google Map API 中的缩放范围扩展至缩放级别 30 的最佳方法是什么?当 Google 的 tileserver 达到限制时,我们可以实现一个“接管”的 tile 服务器吗?或者让 Google Map API 仅使用图形放大来实现超出其数据范围的缩放级别?还有其他可能的方法吗?

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

下图显示了最深的缩放以及它是如何不够的: 在此处输入图像描述

/马格纳斯

4

3 回答 3

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);
于 2015-02-09T20:58:59.513 回答
0

扩展缩放范围的方法是创建自定义MapType. 然后你可以指定minZoomand maxZoom。如果您的地图图块是普通图像,您可以使用ImageMapTypewhich 将为您做一些簿记。MapType或者,如有必要,您可以进行全面定制。

这是一个具有自定义缩放级别和图像图块的示例。ImageMapType

于 2013-09-13T04:00:02.270 回答
0

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

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

最大的问题是确定地图是否处于最大缩放状态(MaxZoomService 仅适用于卫星图像)。我最终得到了一个超级丑陋的解决方案:检查缩放控件中的缩放手柄的位置:-)

于 2013-09-21T17:19:10.760 回答