2011-03-28 5 views
2

나는 이미 this question을 읽었지만 많은 마커 (atm ~ 5000, 매일 자라고)를 가지고있는 상황에 적용 할 몇 가지 후회가 있습니다.Google지도 API v.3을 사용하여 보이는지도 영역의 알기 지점에 가장 가까운 마커를 얻는 방법은 무엇입니까?

내 응용 프로그램에서 사용자는지도를 클릭하거나 주소로 지오 코드를 통해 그의 마커를 배치합니다 (마커라고 부름). 마커 A의 특정 반지름에 마커가 있는지 알아야합니다.

내가 말했듯이, 모든 마커를 반복 할 수는 없으므로 아마도 사용자 브라우저를 죽일 수 있습니다. 가능하다면 피하고 싶습니다. 아약스가 내 데이터베이스를 검색해 달라.

사실 나는지도의 가시 영역에서 마커 사이에서만 검색 할 수있는 방법이 있나요 MarkerManager

를 통해지도에 마커를 삽입?

답변

1

을 많은 많은 연구 후에, 나는 반복 끝났다 용액 (demo here).

반복 할 항목 수를 줄이려면 상태 기반으로 나눕니다 (순간적으로 적용됩니다), 나중에 미래에 더 많은 부서를 추가 할 수 있습니다.

가 다른 사람에게 유용 할 수있는 경우

, 내 '솔루션'와 같은 배열을 의미한다 : 상태를 얻기 위해 사용자 마커의 좌표와

places = { 
    "it":[ 
     "Rome", 
     "Venice" 
    ], 
    "fr":[ 
     "Paris", 
     "Lyon" 
    ], 
    "es":[ 
     "Madrid", 
     "Barcelona", 
     "Girona" 
    ] 
} 

그리고 구글의 지오를 ('FR', '그것') 장소를 찾을 곳.

0

LatLngBounds 개체를 검색하는 getBounds() 메서드를 사용할 수 있습니다. 이 객체를 사용하면 메소드의 getNorthEast(); getSouthWest() 메서드를 호출하여지도의 북서쪽과 남동쪽 경계를 각각 검색 할 수 있습니다. 이 경계를 알고, 당신은 당신의 응용 프로그램에서 (의사 코드)를 계산을 수행 할 수 있습니다

if (yourPointLatitude > southWestBoundLatitude && yourPointLatitude < northWestBoundLatitude && yourPointLongitude > northWestBoundLongitude && yourPointLongitude < southEastBoundLongitude) 
{ 
    //take some action, the point is in the map bounds 
} 

참고 :이 경우는 특정 지리적 위치입니다 -> 그것은 단지에 대한 (세계의 북동 분기 작동합니다 예를 들어 유럽). 당신이 다른 위치에 원하는 경우, if 문에 다른 논리를 사용하고 그

편집 ... 그것 뿐이다 : 자세한 내용은 다음 링크에서 볼 : Map LatLngBounds

+0

(yourPointLatitude> southWestBoundLatitude && yourPointLatitude southWestBoundLongitude &&PointPointLongitude User24231

관련 문제