谷歌地图:放大/缩小与平移到特定点,如maps.google.com上下文菜单
Google maps: zoom in/out with panning to specific point like in maps.google.com context menu
我有一个项目与谷歌地图。我想模拟maps.google.com上下文菜单与Zoom in
和Zoom out
的动作。google.maps.Map.setZoom()
是缩放地图到中心点,但在maps.google.com中,当您右键单击特定点并选择放大/缩小动作时,地图正在平移,使此特定点保持在同一位置。例如,如果我右键单击左上角的点,并在上下文菜单中选择Zoom in
,那么这个点在缩放后保持在光标下,并且不会超出地图边界。
是否有一个简单的方法来实现这个功能?
您可以使用标记来处理它。我不知道这是不是最有效的方法。
在当前鼠标位置添加一个标记(可以跟踪鼠标光标,对吧?上次什么都没做。)然后将地图中心设置为该标记(我知道,有一个功能),然后删除标记。
编辑:哦,对不起,我想我误解了你的问题。因为这就相当于双击一个点,对吧?所以你想让鼠标<->顶部和鼠标<->左侧在屏幕上的距离与它下面的点保持一致,但是再放大/缩小一个阶段?一个类似的问题被问到并回答在:缩放到鼠标(例如。谷歌地图)。
我解决这个问题的方法是沿着相同的路线,除了我的地图像素坐标都是相对于地图的中心(而不是左上角)计算的:
- 确定特定点相对于地图中心的像素偏移量。以像素为单位的地图矩形尺寸可以像 Map . getdiv (). getclientrects ()[0]和中心只是矩形的中心。
- 计算放大/缩小后特定点的新像素偏移量。对于Google Maps 缩放,所有像素偏移量都是双倍的(对于单个缩放步骤),所以如果您的特定点从中心[30,40],那么在正常缩放后它将从地图中心[60,80](或者在正常缩放后它将[15,20]) 。
- 计算缩放后需要调整多少地图中心,使特定点回到开始的地方。在上面的示例中,在放大之后,我们需要进行映射。panBy(-30, -40),或者在缩放之后,我们需要映射。panBy(15、20)。
- 应用法线贴图。setzoom(缩放),然后是计算贴图。panBy(dX, dY)重新居中
相关文章:
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 使用Google Maps API向标记添加多个字符
- Google Maps API OverlayView()在AngularJS指令中不起作用
- 使用Google Maps API驱动时间多边形
- 使用Google Maps JavaScript API v3和Geocoding API映射多个位置
- 在for循环中使用多维数组设置google.maps.Marker图标
- 可扩展的画布作为Google Maps Javascript API中的覆盖
- 在自动完成中使用Google Maps Places API;API不工作
- google.maps.event.addDomListener(window, 'load', fun
- 根据PHP中数组的长度在Google Maps API中循环遍历标记
- 加载Google MAPS API v3的JSON数据
- 如何使用Dojo引用Google Maps事件中的包含类
- Javascript:Google Maps API:如果地图加载在隐藏容器中,则为空白地图
- 如何在Ionic/Codova应用程序中保护我的Google Maps Javascript V3 API密钥
- 来自JSON数组的Google Maps API生成器
- URL http://maps.google.com/maps?saddr=Start&daddr=end 继续
- Google Maps/Google Places:getPlace 和 getDetails 方法之间有区别吗?
- 如何在像maps.google.com这样的标记上右键添加基本方向
- 谷歌地图:放大/缩小与平移到特定点,如maps.google.com上下文菜单
- maps.google 地理编码 Jquery 调用与国家/地区代码