내 질문에 전혀 문제가되지 않는다면 제 문제는 약간 까다 롭습니다. 사과하십시오.변환 위도/경도 거리로
저는 googleMap v3 API를 사용합니다. 사용자가지도를 클릭하여 표시를 만들 수 있습니다. 표시를 클릭하면 경도 정보가 & 인 infoWindow에 표시됩니다 (이 작업은 정상적으로 완료되었습니다).
시도 할 사항 : 사용자가 할 수있는 일 차원 (킬로미터/마일)을주고 주어진 크기의 직사각형을 그려야합니다 (마크를 생성하는 것은 영역의 중앙에 있음). 문제는 위도가 & 경도 인 위도 또는 경계에서만 발생합니다. 그래서 그것을 변환하려고합니다.
여기 코드의 주요 부분이 있습니다.
//latitude
// 1°lat = 111,11 km
//for me: 1km = 0.00900 .
//longitude
//1°lat = 111,11 km * cos latitude
// for me : 1 km = ((1/Math.cos(latitude)) /111.11)
var myBounds = new Array();
var longkm = 5;
var largkm = 2;
myBounds[0] = new google.maps.LatLngBounds(
new google.maps.LatLng(positionmarqueur.lat()-(0.009*longkm), positionmarqueur.lng()-(Math.abs(((1/Math.cos(positionmarqueur.lat()-(0.009*longkm))) /111.11))*largkm)),
new google.maps.LatLng(positionmarqueur.lat()+(0.009*longkm), positionmarqueur.lng()+(Math.abs(((1/Math.cos(positionmarqueur.lat()+(0.009*longkm))) /111.11))*largkm))
);
var overlay1 = new google.maps.Rectangle({
map: map,
bounds: myBounds[0],
strokeColor: "green",
strokeWeight: 1
});
var longkm = 10;
var largkm = 10;
myBounds[1] = new google.maps.LatLngBounds(
new google.maps.LatLng(positionmarqueur.lat()-(0.009*longkm), positionmarqueur.lng()-(Math.abs(((1/Math.cos(positionmarqueur.lat()-(0.009*longkm))) /111.11))*largkm)),
new google.maps.LatLng(positionmarqueur.lat()+(0.009*longkm), positionmarqueur.lng()+(Math.abs(((1/Math.cos(positionmarqueur.lat()+(0.009*longkm))) /111.11))*largkm))
);
var overlay2 = new google.maps.Rectangle({
map: map,
bounds: myBounds[1],
strokeColor: "blue",
strokeWeight: 1
});
이것은 5,2 rectanle와 10, 10 사각형 (음, 10km 광장) 그릴 갈까요 (정보를 원하시면을 = latLng를이 VAR를 positionmarqueur, 위의 코드에서)
내가 가지고가는 경우 결과보기 : 첫 번째 사각형은 50/20km 이상을 보입니다. (내가 실수 할 때 나는 10 가지 요소로 나누 었는가? 나는 수학적으로별로 좋지는 않지만 정확하다.)
seconde .... 그냥 .... 200 * 40km 사각형 모양
겠어요 - 문제는 어디에 있습니까? 공식이 잘못 되었습니까? 아니면 그냥 바보 일 뿐이야?
Thinqs. 사용
Clermont-ferrand 위치 (45.7581263,3.1317803)를 사용하면 트릭이 발생합니다. 나는 jsfiddle & valid answer – ssbb
수식을 편집 할 예정입니까? 내 말은, 만약 당신이 100/100km를 그린다면, 사각형이 아닌 trully이고 사각형 이니, 자바 스크립트 근사값에서 오는 것입니까? 아니면 지구의 성향으로 인해 googlemap에서 이와 같은 것을 볼 수 있습니까? – ssbb
더 정확한 해결책으로 @ssbb 업데이트 답변 (* 변환을 위해 Google 메소드를 사용 *) –