gpt4 book ai didi

google-maps - 谷歌地图 : scroll map programmatically of x pixels

转载 作者:行者123 更新时间:2023-12-03 23:30:34 25 4
gpt4 key购买 nike

scroll gmaps

有没有一种简单的方法来以编程方式滚动谷歌地图 x像素?

我只能想到使用setCenter ,但问题是我必须根据缩放级别计算新位置(纬度/经度)......

你能想到别的吗?如果您对此非常确定,告诉我 Google Map API 不可能是一个有效的答案。

ps:我正在使用Gmaps4rails,所以如果你能想出一种用gem做到这一点的方法,那就太酷了。 (例如将边界调整为 map 的子集。)
因为最终我的目标是防止菜单隐藏一些标记。如果有意义的话,我需要更改 map 的视口(viewport),以便将标记放入橙色区域,而不是完整的 map 。

fit markers

解决方案:

@Shane Best,太好了,这个想法非常有效,但我认为您的解决方案是针对 Google API v2 的,对吧?这是我为 V3 做的:

var point = map.getCenter();

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);

var projection = overlay.getProjection();

var pixelpoint = projection.fromLatLngToDivPixel(point);
pixelpoint.x += my_value; # or .y

point = projection.fromDivPixelToLatLng(pixelpoint);

map.setCenter(point);

如果有人知道 API v3 的更好解决方案,请告诉我们。

最佳答案

看一下投影对象:
http://code.google.com/apis/maps/documentation/javascript/reference.html#Projection

首先,您需要获取 map 的中心。

var point = map.getCenter();

将 latlng 转换为点值。
var pixelpoint = projection.fromLatLngToPoint(point);

将 yourvalue 添加到点值。
pixelpoint.x = pixelpoint.x + yourvalue;
//or
pixelpoint.y = pixelpoint.y + yourvalue;

将其转换回 latLng。
var newpoint = projection.fromPointToLatLng(pixelpoint);

使用新值设置新中心。
map.setCenter(newpoint);

我没有测试过上面的,但它应该可以工作。

关于google-maps - 谷歌地图 : scroll map programmatically of x pixels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com