-2

Googleマップ(アムステルダム、緯度52、lng 4)をクリックするたびに、すべてのズームレベルで、ポリゴンの中心にe.latlngを配置して、100x100スクリーンピクセルの正方形のポリゴンを描画する必要があります。fromLatLngToPoint、fromPointToLatLng、scale、worldCoordinatesを使用してそれを理解しようとしましたが、ポリゴンを描画できません。誰かがこのパズルが好きなら、私は解決策をとても感謝します。(これを、DrawingManagerを使用せずに、ポリゴンをより複雑な形状に編集するための簡単な開始点として使用したいと思います)

私は試した:

google.maps.event.addListener(map, 'click', function(e) {
var scale = Math.pow(2, map.getZoom());
var nw = new google.maps.LatLng(map.getBounds().getNorthEast().lat(),map.getBounds().getSouthWest().lng());
var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw);
var worldCoordinate = map.getProjection().fromLatLngToPoint(e.latLng);
var deX = Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale);
var deY = Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale);

// so far so good, deX and deY give the centerpixel

var deNW = map.getProjection().fromPointToLatLng(new google.maps.Point(deX-50,deY-50));         
var deNO = map.getProjection().fromPointToLatLng(new google.maps.Point(deX+50,deY-50));
var deZO = map.getProjection().fromPointToLatLng(new google.maps.Point(deX+50,deY+50));
var deZW = map.getProjection().fromPointToLatLng(new google.maps.Point(deX-50,deY+50));

var dePathArray = [deNW, deNO, deZO, deZW]; 
deObjectNew = new google.maps.Polygon({
    paths: dePathArray,                         
    strokeColor: '#000000',
    strokeWeight: 1,
    fillColor: "#FF0000",
    fillOpacity: 0.3,
}); 
deObjectNew.setMap(map);

});

4

1 に答える 1

0

とった:

        var deNW = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX-50)/scale+worldCoordinateNW.x,(deY-50)/scale+worldCoordinateNW.y));         
        var deNO = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX+50)/scale+worldCoordinateNW.x,(deY-50)/scale+worldCoordinateNW.y));
        var deZO = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX+50)/scale+worldCoordinateNW.x,(deY+50)/scale+worldCoordinateNW.y));
        var deZW = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX-50)/scale+worldCoordinateNW.x,(deY+50)/scale+worldCoordinateNW.y));
于 2013-02-16T15:24:48.670 に答える