4

四角を描いてみた

rectangle = new google.maps.Rectangle();
var rectOptions = {
    strokeColor : "#FF0000",
    strokeOpacity : 0.8,
    strokeWeight : 2,
    fillOpacity : 0,
    map : map
};
rectangle.setOptions(rectOptions);

長さ0.005'

google.maps.event.addListener(map, 'dragend', function() {

    var center = map.getCenter();
    rectangle.setBounds(new google.maps.LatLngBounds(
            new google.maps.LatLng(center.lat()-0.005, center.lng()-0.005),
            new google.maps.LatLng(center.lat()+0.005, center.lng()+0.005)));
});

しかし、正方形は赤道近くの正方形であることに気付きましたが、他の場所ではかなり変形しています。経度と同等の長さを取得するために緯度とともに減少する関数はありますか? 助けてくれてthx

編集: 正方形の高さ = cos(lat)width

4

1 に答える 1

0

アンドリュー・リーチのコメントから:

function drawSquare(position=new google.maps.LatLng(41, 36.12), radius=0.001){

    var rectangle = new google.maps.Rectangle();
    var rectOptions = {
        strokeColor : "#FF0000",
        strokeOpacity : 0.8,
        strokeWeight : 2,
        fillOpacity : 0
    };
    rectangle.setOptions(rectOptions);

    var c = Math.cos(position.lat()* Math.PI / 180);
    rectangle.setBounds(new google.maps.LatLngBounds(
            new google.maps.LatLng(position.lat()-c*radius/2, position.lng()-radius/2),
            new google.maps.LatLng(position.lat()+c*radius/2, position.lng()+radius/2)));
    return rectangle;
}
于 2012-10-26T10:41:11.493 に答える