1

일부 특정 장소에서 일정을 만들도록 사용자에게 제안합니다. 주소를 자동 완성하려면 Google places API을 사용합니다. 따라서 사용자가 "New Yor"을 입력하면 "New York, Central Park"을 제공 할 수 있습니다. 그가 그것을 선택하면, 전체 주소는 데이터베이스의 + 위도와 경도에 저장됩니다.특정 주소의 위도와 경도가 도시의 위도와 경도에 속하는지 확인하는 방법은 무엇입니까?

다른 사용자가 New York의 모든 이벤트를보고 싶을 때 문제가 발생합니다.

내가 사용하는 서비스가 와일드 카드 검색을 지원하지 않기 때문에 New York 위도 및 경도에 위도와 경도가 New York, Central Park 포함되어 있는지 확인할 방법을 찾고 있습니다.

아이디어가 있으십니까?

일부 코드 : 그냥 "뉴욕"검색 결과를 저장하면

uri = "https://www.maps.google.com/maps/api/geocode/json?address=" + 
       URLEncoder.encode(params[0].toString(), "UTF-8") + 
"&sensor=false"; 
+1

단순히 전체 String을 저장하는 대신 저장하기 전에 데이터를 분할하지 마십시오. 예 : "뉴욕, 센트럴 파크"를 각각 주와 지역의 별도 열로 나눕니다. 그러면 국가 차원의 사건, 심지어는 해당 주 (state)의 하위 지역 내의 사건까지도 결정하는 것이 훨씬 쉬울 것입니다. 전체 전체 String을 저장하는 것은 실제로 당신을 아프게하고 실제로 데이터를 사용하는 시간이 올 때 확실히 당신의 작업을 어렵게 만들 것입니다. – Guardanis

+1

실제로 매우 좋은 점, 감사합니다. 하지만 불행하게도 자동 완성 기능은 때때로 도시 + 국가를 제공하며 때로는 주소도 제공합니다. 하지만 예, 저는 그것을 쉼표로 구분하고 뭔가 알아낼 수 있습니다. –

답변

1

이뿐만 아니라 위도/경도 범위를 저장해야합니다.

http://maps.google.com/maps/api/geocode/json?address=new%20york 

경계가> 검색 결과 -> geometry- 아래의 JSON에 당신이 "뉴욕 센트럴 파크 (Central Park)"는 "뉴욕"내에 있는지 확인하고자 할 때 이제

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "New York", 
       "short_name" : "NY", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "New York", 
       "short_name" : "NY", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "New York, NY, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 40.91525559999999, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4913686, 
        "lng" : -74.25908989999999 
       } 
      }, 
      "location" : { 
       "lat" : 40.7127837, 
       "lng" : -74.0059413 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 40.91525559999999, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4913686, 
        "lng" : -74.25908989999999 
       } 
      } 
     }, 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

을 경계하는 작업을 수행 센트럴 파크의 위도/경도가 남서쪽 경계보다 크지 만 북동 경계보다 작은지를 확인하기위한 간단한 점검.

+1

대답 인 것 같습니다! 나는 그와 비슷한 것을 생각하고 있었는데, 그 정도가 크거나 작은지를 확인하는 것만으로는 충분하지 않다. 내 잘못이지만 고맙습니다. –

+0

드문 경우 두 가지에 대해 조금 연구했습니다. 경계에 북쪽/남쪽 막대가있을 때 (http://maps.google.com/maps/api/geocode/json?address = 남극 대륙) 및 경계에 180도 경도선이 포함 된 경우 (http://maps.google.com/maps/api/geocode/json?address=alaska) 전자의 경우 Google은 극점을 경계점으로 사용하여 간단한 확인 작업을 수행합니다. 후자의 경우 북동 경도가 남서 경도보다 큰지 항상 먼저 확인한 다음 그렇지 않으면 북동 경도에 360을 추가하여 정상화하지 않으면 작동하지 않습니다. –

+0

의견에 감사드립니다. 잘 ~ :) –