2

我的意思是,我想将地图居中到一个固定位置:

map.setCenter(markerCliccato.getPosition());

并且更少(Y 轴)向下 100 像素。可能吗?或者我需要这个“虚拟”点的纬度/经度?

这是因为我有一个非常高的 InfoWindow,我需要把它放在离地图顶部 100px 的地方!不能在 infowindow 上使用“margin”,因为这会与地图中的其他标记产生麻烦。

例子

我将这一点称为 Lat/Lng:https ://maps.google.com/?q=54.572062,-3.038818

但我想将地图置于https://maps.google.com/?q=54.486793,-3.042046的中心(在地图中,这或多或少低于我的点 100 像素)

4

1 回答 1

2

好的,我需要发布图片:)

这是点击之前

前

这是之后

后

没有灰色区域,地图全部渲染。

此外,要查看标记,您必须允许该站点跟踪您的位置。

function offsetCenter(latlng, offsetx, offsety) {
    var scale = Math.pow(2, map.getZoom());
    var nw = new google.maps.LatLng(
    map.getBounds().getNorthEast().lat(), map.getBounds().getSouthWest().lng());

    var worldCoordinateCenter = map.getProjection().fromLatLngToPoint(latlng);
    var pixelOffset = new google.maps.Point((offsetx / scale) || 0, (offsety / scale) || 0)

    var worldCoordinateNewCenter = new google.maps.Point(
    worldCoordinateCenter.x - pixelOffset.x, worldCoordinateCenter.y + pixelOffset.y);

    var newCenter = map.getProjection().fromPointToLatLng(worldCoordinateNewCenter);

    map.setCenter(newCenter);
}

看到它在这里工作:http: //jsfiddle.net/RASG/vA4eQ/

使用 FF 15、IE 9 和 Chrome 21 测试

于 2012-11-05T15:13:48.383 回答