我有(x,y)
(event.pageX-$("#map_canvas").offset().left,event.pageY-$("#map_canvas").offset().top)
但如何获得(lat,lng)
感谢
答案 0 :(得分:4)
在地图定义的初始化函数中:
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);
最佳ķ
答案 1 :(得分:0)
输入左上角像素偏移量(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
对象中。
答案 2 :(得分:0)
这是一个不依赖于OverlayView()的代码。此方法使用maps 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/