Rob*_*bin 13 scroll google-maps google-maps-api-3 gmaps4rails

有一种简单的方法以编程方式滚动谷歌地图的x像素?
我只能考虑使用setCenter,但问题是我必须根据缩放级别计算新位置(lat/lng)...
你能想到别的吗?告诉我,如果您对此非常肯定,使用Google Map API是不可能的.
ps:我正在使用Gmaps4rails,所以如果你能想到用宝石做到这一点的方法,它会很酷.(比如将边界调整为地图的子集.)因为最终我的目标是阻止菜单隐藏一些标记.我需要更改地图的视口,如果这是有意义的,那么它使标记适合橙色区域,而不是完整的地图.

解:
@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);
Run Code Online (Sandbox Code Playgroud)
如果有人知道有关API v3的更好的解决方案,请告诉我们.
Sha*_*est 13
看一下投影对象:http: //code.google.com/apis/maps/documentation/javascript/reference.html#Projection
首先,您需要获得地图的中心.
var point = map.getCenter();
Run Code Online (Sandbox Code Playgroud)
将latlng转换为点值.
var pixelpoint = projection.fromLatLngToPoint(point);
Run Code Online (Sandbox Code Playgroud)
将您的值添加到点值.
pixelpoint.x = pixelpoint.x + yourvalue;
//or
pixelpoint.y = pixelpoint.y + yourvalue;
Run Code Online (Sandbox Code Playgroud)
将其转换回latLng.
var newpoint = projection.fromPointToLatLng(pixelpoint);
Run Code Online (Sandbox Code Playgroud)
使用新值设置新中心.
map.setCenter(newpoint);
Run Code Online (Sandbox Code Playgroud)
我没有测试过上面但它应该工作.
小智 7
我相信你在寻找这个:
var panListener = google.maps.event.addListenerOnce(map, 'bounds_changed', function(event) {
map.panBy(0,-90);
});
setTimeout(function() {
google.maps.event.removeListener(panListener)
}, 2000);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将地图向南移动90px.
| 归档时间: |
|
| 查看次数: |
6954 次 |
| 最近记录: |