Google Map API需要更深的缩放

我们正在Google Map(使用Google Map API v3)之上开发一个GIS应用程序,但是由于一些地图对象很小(小到大约1米),因此应用程序需要用户放大关闭,并且需要进行图形编辑。

在Google Map API中扩展缩放范围的最佳方法是什么?缩小到30级缩放? 我们可以实现一个瓦片服务器,当谷歌拼图服务器达到极限时“接管”? 或者让谷歌地图API只使用图形放大来获取超出其数据范围的缩放级别? 任何其他可能的方法?

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

下面的图片显示了最深的缩放以及它的不足之处: 在这里输入图像描述

/马格努斯


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

以下是一个ImageMapType的示例,它具有自定义缩放级别和图像切片。


这是我终于如何解决它。 不是一个完美的解决方案,但足以满足我的目的:

  • 创建并添加一个自定义Maptype,只有空白的瓷砖,但具有较高的最大变焦。
  • 在谷歌获得它之前,将其锁定到鼠标滚轮事件中(请参阅:挂钩Google Map API中的鼠标滑轮事件)
  • 当用鼠标滚轮放大时,检查是否在maxZoom,如果是这样,切换到空白地图(并标记为缩小时切换回来)。 由于mousewheel钩子在谷歌获得之前,即使maptype改变,缩放也不会中断。
  • 最大的问题是确定地图是否处于最大变焦范围(MaxZoomService仅适用于卫星图像)。 我结束了一个超丑陋的解决方案:检查变焦控制中的zoon-handle的位置:-)


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

    如果变焦不变,这意味着谷歌是在最大变焦。

    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);
    
    链接地址: http://www.djcxy.com/p/81593.html

    上一篇: Deeper zoom needed in Google Map API

    下一篇: Use Google Maps in an Android Application and Zoom Level