2013-08-02 1 views
0

Я пытаюсь написать некоторые коды Java, получающие адреса с адреса. (не в среде Android.)Каков наилучший способ получить долготу и широту для адреса через Google в java

Если возможно, я хочу, чтобы он был постоянным, пока Google предоставляет услуги геоопределения каким-либо образом.

Я думаю, что я не могу сказать, что Google javascript geolocation apis использует постоянный URL-адрес, чтобы сделать это, поскольку объект api должен появиться с сервера Google во время выполнения.

Однако я думаю, что возможно, что Android может использовать постоянный URL-адрес, поскольку Google не может изменять URL-адреса каждого устройства, через которые устройства получают услуги геолокации.

Я не прав? Есть ли какая-либо политика Google в отношении этого?

Заранее спасибо.

ответ

1

Вы можете попробовать использовать API HTTP HTTP для получения геокодирования и обратного геокодирования.

Геокодирование просит

Запрос API геокодирования должен иметь следующую форму:

http://maps.googleapis.com/maps/api/geocode/output?parameters

, где выход может быть одним из следующих значений:

JSON (рекомендуется) указывает вывод в JavaScript Обозначение объекта (JSON) xml указывает вывод как XML

Следуйте по этой ссылке больше: https://developers.google.com/maps/documentation/geocoding/

1

Если вы думаете, чтобы использовать Google ГЕОКОДИРОВАНИЮ, этот материал будет полезен для вас:

Запрос API геокодирования должен иметь следующий вид:

http://maps.googleapis.com/maps/api/geocode/output?parameters

, где выход может быть одним из следующих значений:

json (recommended) indicates output in JavaScript Object Notation (JSON) 
xml indicates output as XML 

Чтобы получить доступ к API геокодирования через HTTPS, использование:

https://maps.googleapis.com/maps/api/geocode/output?parameters

HTTPS рекомендуется для приложений, которые включают в себя конфиденциальные данные пользователей, такие как местоположение пользователя, в запросах.

В любом случае требуются определенные параметры, в то время как некоторые из них являются необязательными. Как указано в URL-адресах, все параметры разделяются символом амперсанда (&). Список параметров и их возможные значения перечислены ниже.

Требуемые параметры

address — The address that you want to geocode. 
    or 
latlng — The textual latitude/longitude value for which you wish to obtain the closest, human-readable address. See Reverse Geocoding for more information. 
    or 
components — A component filter for which you wish to obtain a geocode. See Component Filtering for more information. The components filter will also be accepted as an optional parameter if an address is provided. 
sensor — Indicates whether or not the geocoding request comes from a device with a location sensor. This value must be either true or false. 

Maps API для бизнес-пользователей должны включать в себя действительные клиентские и подписи параметров с их запросами геокодирования. Дополнительную информацию см. В API Карт для веб-служб бизнеса.

Дополнительные параметры

bounds — The bounding box of the viewport within which to bias geocode results more prominently. This parameter will only influence, not fully restrict, results from the geocoder. (For more information see Viewport Biasing below.) 
language — The language in which to return results. See the list of supported domain languages. Note that we often update supported languages so this list may not be exhaustive. If language is not supplied, the geocoder will attempt to use the native language of the domain from which the request is sent wherever possible. 
region — The region code, specified as a ccTLD ("top-level domain") two-character value. This parameter will only influence, not fully restrict, results from the geocoder. (For more information see Region Biasing below.) 
components — The component filters, separated by a pipe (|). Each component filter consists of a component:value pair and will fully restrict the results from the geocoder. For more information see Component Filtering, below. 

JSON Выходные форматы

В этом примере API геокодирования запрашивает ответ JSON для запроса "1600 Amphitheatre Parkway, Mountain View, CA":

http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false

Мы оставили параметр датчика в этом примере как переменную true_or_false, чтобы подчеркнуть, что вы должны t это значение как true, так и false.

JSON, возвращенный этим запросом, показан ниже. Обратите внимание, что фактический JSON может содержать меньше пробелов. Вы не должны делать предположения о размере или формате пробелов между запросами.

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "1600", 
       "short_name" : "1600", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "Amphitheatre Pkwy", 
       "short_name" : "Amphitheatre Pkwy", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Mountain View", 
       "short_name" : "Mountain View", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Santa Clara", 
       "short_name" : "Santa Clara", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "California", 
       "short_name" : "CA", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "94043", 
       "short_name" : "94043", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", 
     "geometry" : { 
      "location" : { 
       "lat" : 37.42291810, 
       "lng" : -122.08542120 
      }, 
      "location_type" : "ROOFTOP", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 37.42426708029149, 
        "lng" : -122.0840722197085 
       }, 
       "southwest" : { 
        "lat" : 37.42156911970850, 
        "lng" : -122.0867701802915 
       } 
      } 
     }, 
     "types" : [ "street_address" ] 
     } 
    ], 
    "status" : "OK" 
} 

Вот некоторые примеры кода, которые помогут вам захватить широту и долготу:

public static void main(String[] args) { 

     try 
     { 
      URL url = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false"); 
      URLConnection conn = url.openConnection();                  
      conn.connect(); 
      InputStreamReader isr = new InputStreamReader(conn.getInputStream()); 
      StringBuffer sbLocation = new StringBuffer(); 

      for (int i=0; i != -1; i = isr.read()) 
      { 
       sbLocation.append((char)i); 
      } 
      String getContent = sbLocation.toString().trim(); 
      if(getContent.contains("results")) 
      { 
       String temp = getContent.substring(getContent.indexOf("[")); 
       JSONArray JSONArrayForAll = new JSONArray(temp); 
       String lng = JSONArrayForAll.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lng").toString(); 
       String lat = JSONArrayForAll.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lat").toString(); 
       System.out.println(" Latitude : " + lat); 
       System.out.println(" Longitude : " + lng); 
      } 
     } 
     catch (MalformedURLException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
} 
+0

Но для этого вам придется использовать JSON-Lib-x.x.jar –

Смежные вопросы