如何将LatLng转换为(x,y)像素,反之亦然?

时间:2012-08-09 09:32:37

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

我正在使用谷歌地图API V3,我想在用户点击地图时创建一个可编辑的100px X 100px矩形。

现在我只需要用户点击的(x,y)点,然后是(x + 100,y + 100)的lat和lng。 任何的想法?

2 个答案:

答案 0 :(得分:16)

此功能应在您传递给它的中心(LatLng)周围创建一个100 x100的矩形。

function setRectangle(center){
    var scale = Math.pow(2,map.getZoom());
    var proj = map.getProjection();
    var wc = proj.fromLatLngToPoint(center);
    var bounds = new google.maps.LatLngBounds();
    var sw = new google.maps.Point(((wc.x * scale) - 50)/ scale, ((wc.y * scale) - 50)/ scale);
    bounds.extend(proj.fromPointToLatLng(sw));
    var ne = new google.maps.Point(((wc.x * scale) + 50)/ scale, ((wc.y * scale) + 50)/ scale);
    bounds.extend(proj.fromPointToLatLng(ne));
    var opts = {
        bounds: bounds,
        map: map,
        editable:true
    }
    var rect = new google.maps.Rectangle(opts);

}

答案 1 :(得分:7)

您可以使用

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

var proj = overlay.getProjection();
var pos = marker.getPosition();
var p = proj.fromLatLngToContainerPixel(pos);

现在你可以从p.x和p.y获得像素