0

アドレスから場所を取得する Java コードをいくつか書き込もうとしています。(アンドロイド環境ではありません。)

可能であれば、Google が何らかの形で位置情報サービスを提供している限り、永続的な方法でありたいと考えています。

APIのオブジェクトは実行時にGoogleサーバーから取得されるため、Google JavaScriptジオロケーションAPIが永続的なURLを使用してそれを行うとは言えません。

ただし、Google はすべてのデバイスの URL を変更してデバイスが地理位置情報サービスを取得できるわけではないため、Android が永続的な URL を使用してそれを行う可能性があるように思われます。

私が間違っている?それに関するGoogleのポリシーはありますか?

前もって感謝します。

4

2 に答える 2

1

ジオコーディングとリバース ジオコーディングを取得するために、Google HTTP API の使用を試みることができます。

ジオコーディング リクエスト

Geocoding API リクエストは、次の形式にする必要があります。

http://maps.googleapis.com/maps/api/geocode/output?パラメータ

ここで、出力は次の値のいずれかになります。

json (推奨) JavaScript Object Notation (JSON) での出力を示します xml は XML としての出力を示します

詳細については、このリンクに従ってください: https://developers.google.com/maps/documentation/geocoding/

于 2013-08-02T09:03:03.737 に答える
1

Google GeoCoding の使用を検討している場合は、次のものが役立ちます。

Geocoding API リクエストは、次の形式にする必要があります。

http://maps.googleapis.com/maps/api/geocode/output?パラメータ

ここで、出力は次の値のいずれかになります。

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

HTTPS 経由で Geocoding API にアクセスするには、次を使用します。

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 for Business ユーザーは、ジオコーディング リクエストに有効なクライアント パラメータと署名パラメータを含める必要があります。詳細については、Maps API for Business Web Services を参照してください。

オプションのパラメーター

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 出力形式

この例では、Geocoding API は、「1600 Amphitheatre Parkway, Mountain View, CA」に関するクエリに対して json レスポンスをリクエストします。

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

この例では、この値を明示的に true または false に設定する必要があることを強調するために、センサー パラメーターを変数 true_or_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();
        }
}
于 2013-08-02T09:40:49.937 に答える