【问题标题】:Is it possible to center a map at a fixed position (lat lng) - 100px?是否可以将地图居中在固定位置(lat lng) - 100px?
【发布时间】:2012-11-05 14:38:12
【问题描述】:

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

map.setCenter(markerCliccato.getPosition());

向下(Y 轴)100 像素以下。是否可以?或者我需要这个“虚拟”点的纬度/经度?

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

示例

我认为这一点是纬度/经度:https://maps.google.com/?q=54.572062,-3.038818

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

【问题讨论】:

  • 我也是,我是意大利人!我的意思是:由于标记的 Lat Lng,我可以将地图居中,对吧?好!现在用光标将地图向下移动 100 像素!地图的中心应该是我要找的...
  • 否:我的意思不是“移动地图”,而是将地图的中心向下移动 100px...
  • 查看示例,也许会更清楚...
  • 好的。更新了我在 jsfiddle 上的演示。单击按钮以向下居中 100 像素。如果它工作不正常作为答案发布。 jsfiddle.net/RASG/vA4eQ
  • 我在您的示例中没有看到任何标记:O 另外,好的,它会将地图“向下”移动,但当然它必须呈现在顶部,而不是灰色 :)

标签: google-maps google-maps-api-3


【解决方案1】:

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

这是在点击之前

这是之后

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

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

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 测试

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多