如何从位置(x,y)获取 google maps v3 上的位置(lat/lng)

Posted

技术标签:

【中文标题】如何从位置(x,y)获取 google maps v3 上的位置(lat/lng)【英文标题】:how to get the location(lat/lng) on google maps v3 from the location(x,y) 【发布时间】:2011-04-03 19:36:07 【问题描述】:

我有 (x,y)

(event.pageX-$("#map_canvas").offset().left,event.pageY-$("#map_canvas").offset().top)

但是如何获得 (lat,lng)

谢谢

【问题讨论】:

【参考方案1】:

在地图定义的初始化函数中:

var overlay;
overlay = new google.maps.OverlayView();
overlay.draw = function() ;
overlay.setMap(map);

下一步当你想要运行位置时:

var point=new google.maps.Point(x,y);
var location=$overlay.getProjection().fromContainerPixelToLatLng(point); 

最好的 克

【讨论】:

【参考方案2】:

输入左侧和顶部像素偏移 (x,y) 并返回 google.maps.LatLng

function PixelToLatLng(x,y)
    var overlay = new google.maps.OverlayView()
    overlay.setMap(map);
    var LatLng = overlay.getProjection().fromContainerPixelToLatLng(new google.maps.Point(x,y));        
    overlay.setMap(null); delete overlay;
    return LatLng;

很惊讶这不在google.maps.Map 对象中。

【讨论】:

这与之前的答案有何不同? 清理简单的函数,不会在地图上留下叠加层。【参考方案3】:

这是一个不依赖 OverlayView() 的代码。此方法利用地图 API 中内置的 fromPointToLatLng() 方法。

function pixelToLatlng(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://magicalrosebud.com/how-to-use-googlemaps-api-frompointtolatlng/

这是一个小提琴:http://jsfiddle.net/mhaq865o/5/

【讨论】:

以上是关于如何从位置(x,y)获取 google maps v3 上的位置(lat/lng)的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Maps android 中的当前位置不断检测附近的标记位置?

如何在 Google Map iOS Swift 中获取点击位置的 Lat Long

如何从Google地图标记获取经度和经度以便在表单中更新?

ros如何获得机器人在map中的朝向

如何使用iOS和Swift从Google SDK获取附近的地点?

Google Maps API JS - 从另一个JS文件访问标记位置