Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API需要更深入的缩放_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图API需要更深入的缩放

Javascript 谷歌地图API需要更深入的缩放,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我们正在Google Map(使用Google Map API v3)之上开发一个GIS应用程序,但是该应用程序需要用户放大,因为一些地图对象很小(大约1米),需要进行图形编辑 在Google Map API中将缩放范围扩展到30级的最佳方法是什么?当谷歌tileserver达到极限时,我们能实现一个“接管”的tile服务器吗?或者让Google Map API仅仅使用图形放大来显示超出其数据范围的缩放级别?还有其他可能的方法吗 当使用Hybrit或卫星地图时,这个问题尤其麻烦,因为它们的缩放级

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

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

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

下图显示了最深的变焦,以及它是如何不够的:


/Magnus

扩展缩放范围的方法是创建一个自定义。然后可以指定
minZoom
maxZoom
。如果您的地图分幅是普通图像,您可以使用,这将为您做一些簿记。或者,如有必要,您也可以选择全面定制的
MapType


这是一个具有自定义缩放级别和图像平铺的应用程序。

这是我最终解决该问题的方法。这不是一个完美的解决方案,但对我来说已经足够好了:

  • 创建并添加一个自定义贴图类型,该贴图类型只包含空白分幅,但具有较高的最大缩放比例
  • 在Google获得mousewheel事件之前将其钩住(请参见此处:)
  • 当使用鼠标滚轮放大时,检查是否在maxZoom,如果是,则切换到空白贴图(并标记在缩小时切换回)。由于鼠标滚轮钩子在google获得之前就已经存在,所以即使地图类型发生了更改,缩放也不会中断

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

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

如果缩放没有改变,这意味着谷歌的最大缩放

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

无法放大比可用信息更近的区域。CSI不是真实的生活。“图形放大”可以拉伸像素,但不会增加任何整体缩放。我想OP已经意识到了这一点。他想知道如何在特定的缩放级别上替换您自己的位图。添加了一张图片,显示最深的缩放是如何不够的。谢谢,但是我们使用谷歌地图作为背景地图,并在上面绘制用户数据。因此,我们需要标准地图类型的普通平铺(至少对于正常的缩放范围)。我有一张图片显示了这个问题,但在允许我发布图片之前需要更多的声誉:-)您可以使用在标准谷歌平铺上绘制自己的平铺,但这不允许您扩展缩放范围。我很确定,没有办法让Maps API使用现有缩放范围之外的标准分幅。他们不会将瓷砖缩放2倍或4倍或其他,他们只会停止绘制。好的,当超出缩放范围时,是否可以让Map API显示其他内容?喜欢灰色的瓷砖吗?或者可能有一个当超出缩放范围时提供图片的平铺服务器?