如何在google maps v3上使用fromPointToLatLng

时间:2010-09-16 01:27:09

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

这是我的代码:

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)
});

我想在Google地图上制作一个节点,但我无法正确使用fromPointToLatLng。我该怎么办?

2 个答案:

答案 0 :(得分:6)

这是我如何使用fromPointToLatLng()方法。首先需要在地图上找到左上角的Lat / Lng然后从那里计算偏移量。

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方法,如此处所述http://magicalrosebud.com/how-to-use-googlemaps-api-frompointtolatlng/

答案 1 :(得分:2)

Projection中的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));
});

我认为你只需要知道/使用它,如果你想计算缩放级别或做一些类似的事情你需要知道真实世界坐标和屏幕像素之间的关系。

您要求添加&#34;节点&#34;到地图。如果您正在考虑文档所称的内容和#34;标记&#34;,请查看他们的section on markers