【问题标题】:Deeper zoom needed in Google Map APIGoogle Map API 需要更深的缩放
【发布时间】:2013-09-12 22:44:44
【问题描述】:

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

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

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

下图显示了最深的缩放以及它是如何不够的:

/马格纳斯

【问题讨论】:

  • 无法放大到比可用信息更近的地方。 CSI不是现实生活。 “图形放大”可以拉伸像素,但不会增加任何整体缩放。
  • 我认为 OP 知道这一点。他想知道如何从某个缩放级别替换您自己的位图。
  • 添加了一张图片,显示最深的缩放是如何不够的。

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


【解决方案1】:

扩展缩放范围的方法是创建自定义MapType。然后您可以指定minZoommaxZoom。如果您的地图图块是普通图像,您可以使用ImageMapType,它会为您做一些记账。或者,如果需要,您可以选择一个成熟的自定义 MapType

这是一个example of an ImageMapType,它具有自定义缩放级别和图像图块。

【讨论】:

  • 谢谢,不过我们使用谷歌地图作为背景地图,并在其上绘制用户数据。所以我们需要标准地图类型中的普通图块(至少对于正常缩放范围)。
  • 我有一张显示问题的图片,但在我允许发布图片之前需要更多的声誉 :-)
  • 您可以使用OverlayMapType 在标准 Google 磁贴上绘制自己的磁贴,但这不会让您扩展缩放范围。我很确定没有办法让 Maps API 使用现有缩放范围之外的标准图块。他们不会将图块缩放 2 倍或 4 倍或其他任何东西,他们只会停止绘制它们。
  • 好的,是否可以让 Map API 在缩放范围之外显示其他内容?像灰色瓷砖?或者也许有一个在缩放范围之外提供图片的图块服务器?
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    如果缩放没有改变,这意味着谷歌处于最大缩放状态。

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2015-05-28
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多