如何在Google Maps V3上使用fromPointToLatLng函数

5
这是我的代码:

var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map,'projection_changed', function () {
    var proj = map.getProjection();
    ltBound = proj.fromPointToLatLng(new google.maps.Point(0,100))
    rbBound = proj.fromPointToLatLng(new google.maps.Point(100,200))
    console.log(ltBound,rbBound)
});

我想在谷歌地图上创建一个节点,但我无法正确使用fromPointToLatLng。有什么可以做的吗?

2个回答

11

这是我如何使用fromPointToLatLng()方法的步骤。您首先需要找到地图左上角点的纬度/经度,然后从那里计算偏移量。

var pixelToLatlng = function(xcoor, ycoor) {
  var ne = map.getBounds().getNorthEast();
  var sw = map.getBounds().getSouthWest();
  var projection = map.getProjection();
  var topRight = projection.fromLatLngToPoint(ne);
  var bottomLeft = projection.fromLatLngToPoint(sw);
  var scale = 1 << map.getZoom();
  var newLatlng = projection.fromPointToLatLng(new google.maps.Point(xcoor / scale + bottomLeft.x, ycoor / scale + topRight.y));
  return newLatlng;
};

在这里尝试这个小提琴: http://jsfiddle.net/mhaq865o/5/

你可以使用fromPointToLatLng()方法或者OverlayView方法,如这里所描述的。


3
投影中,fromPointToLatLngfromLatLngToPoint方法用于在256x256坐标系和真实世界坐标之间进行转换。
当您处于0级缩放时,整个Google地图的大小为256x256像素。尝试缩小并输出单击地图时获得的点:
google.maps.event.addListener(map, 'click', function(event) {
    var proj = map.getProjection();
    console.log('latLng: ' + event.latLng);
    console.log('Point:  ' + proj.fromLatLngToPoint(event.latLng));
});

我认为只有在计算缩放级别或类似需要知道真实世界坐标和屏幕像素之间关系的情况下,您才需要了解/使用此内容。
如果您想添加地图中的“节点”,则请参阅文档中所称的“标记”部分。标记部分

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接