2010-01-17 4 views
5

도시의 위치에 약 20 개의 마커를 표시합니다. getLatLng을 사용하여 도심을 찾으려면 항상 플로팅하는 위치에서 약간 제거됩니다. 즉, 마커는 일반적으로 중심이 아닌 내지도 구석에 위치합니다.마커 lat long 값을 기반으로 Google지도를 중앙에 배치

내 위치의 중심에있는지도의 중심에지도를 표시하는 방법이 있습니까? 나는 내가 사용할 수있는 20 개의 위도/경도 값으로부터 계산 된 "평균"위도/경도 좌표를 필요로한다고 생각합니다.

이것이 가능합니까?

답변

6

센터 찾기는 꽤 쉬워야합니다. 귀하의 그룹에서 가장 작은 위도와 경도 좌표를 찾으십시오.

중심은 [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2]입니다. 같은

뭔가 : 당신의 포인트는 경도 경계 교차하는 경우

var points = Array(); 
points.push(new GLatLng(xxx, yyy)); 
... 

min_lat = 90; 
max_lat = -90; 
min_long = 180; 
max_long = -180; 
for (p in points) { 
    if (p[0] < min_lat) { 
     min_lat = p[0]; 
    } 
    if (p[0] > max_lat) { 
     max_lat = p[0]; 
    } 
    if (p[1] < min_long) { 
     min_long = p[1]; 
    } 
    if (p[1] > max_long) { 
     max_long = p[1]; 
    } 
} 

center = new GLatLng(min_lat + (max_lat - min_lat)/2, 
        min_long + (max_long - min_long)/2]; 
map.setCenter(center, 10); 

이 코드는 아마 문제가됩니다 (& plusmn를 180 °). 또한 점이 평면의 표면 (구의 표면이 아닌)에 있다고 가정합니다.

미국에서 서로 수백 마일 이내에있는 좌표에 대해 이야기하는 경우 그다지 중요하지 않습니다.

관련 문제