谷歌地图:重新定义中心点,适合特定区域的边界
Posted
技术标签:
【中文标题】谷歌地图:重新定义中心点,适合特定区域的边界【英文标题】:Google Maps: redefine center point, fit bounds to specific area 【发布时间】:2012-12-26 10:53:08 【问题描述】:这是我在使用 Google Maps API 时遇到的真正挑战。我有一个全屏的应用程序,有一个填充整个背景的谷歌地图。此应用的某些 UI 镶边覆盖了部分地图,因此实际上整个地图并不总是可见的。
相反,我们有一个“主要”可见区域和一个“部分”可见区域,如下所示:
这是我的问题:
通常,如果您想在调用map.setCenter(latLng)
的视图中居中某些内容,这会将给定的 latLng 放在地图画布的确切中心。但是,就我而言,我想将给定的 latLng 放在画布的确切中心,而不是放在画布完全可见部分的中心。
除了画布的确切中心之外,我还没有找到任何有关将地理点设置为任何其他位置的方法的文档。有谁知道这是否可能?
同样,如果您想缩放地图以使其适合多个点,您可以将所有这些 latLng 传递给边界对象,在每个对象上调用bounds.extend(latLng)
,然后调用map.fitBounds(bounds)
。
但是,这将适合地图,以便点显示在整个地图画布中。是否可以让它们适合画布的特定部分?
感谢您在这里提供任何见解。
【问题讨论】:
【参考方案1】:创建地图后,使用地图的 panBy 方法按给定像素平移地图。
map.panBy(rightPadding/2,-topPadding/2);
演示:http://jsfiddle.net/doktormolle/JsBEx/
【讨论】:
好的,这是一个居中点的好主意。您对如何确保边界内的所有点都适合可见区域而不是总区域有任何想法吗? 经过详细研究后,我得出的结论是,您实际上不能在与完整地图不同的区域上使用 fitbounds 或任何其他方法。但是,您展示的平移可以正常工作,并且通常,如果您适合边界,平移,然后缩小一个,事情就会像我需要的那样显示出来。所以,我会在此基础上接受这个答案。谢谢!【参考方案2】:这里描述了另一种方式:How to make fitBounds aware of custom controls。另外,您可以使用 containsLocation 仔细检查这两种技术是否有效 (Google Maps fitBounds into specific area)
【讨论】:
以上是关于谷歌地图:重新定义中心点,适合特定区域的边界的主要内容,如果未能解决你的问题,请参考以下文章