2012-02-02 10 views
0

私は自分のプロジェクトでgoogle map apis v2を使っていました。今私はv3にGoogleマップのAPIのバージョンを変更したい。古いコードでは、私は次のようGoogleマップapi v3でマーカーを取得するにはどうすればよいですか?

JSONObject placemark = json.getJSONArray("Placemark").getJSONObject(0);  
        AddressDetail address = new AddressDetail(); 
        address.setFullAddress(placemark.getString("address")); 
        JSONObject area = placemark.getJSONObject("AddressDetails").getJSONObject("Country").getJSONObject("AdministrativeArea"); 
        address.setCounty(area.getString("AdministrativeAreaName")); 
        JSONObject subArea = area.getJSONObject("SubAdministrativeArea"); 
        address.setTown(subArea.getString("SubAdministrativeAreaName")); 
        JSONObject locality = subArea.getJSONObject("Locality"); 
        address.setLocalityName(locality.getString("LocalityName")); 
        address.setPostCode(locality.getJSONObject("PostalCode").getString("PostalCodeNumber")); 
        address.setStreet(locality.getJSONObject("Thoroughfare").getString("ThoroughfareName")); 

でJSON文字列を解析しましたが、私はV3にグーグルマップのバージョンを変更して生成したURLを

http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=51.520205,-0.1379954

にしてserver.Gettingにリクエストを送信するときjsonに目印がありません。

Googleマップapi v3で目印を取得するにはどうすればよいですか?

答えて

1

応答の構造が、ジオコーディングWebサービスのV3で変更されました。新しい構造に再マップするためにコードを変更する必要があります。それはそれほど難しいことではありませんが。

たとえば、コード内のFullAddressは、formatted_addressStreet = routeに基づいています。等々。ここに全要素の一覧が表示されます:

http://code.google.com/apis/maps/documentation/geocoding/#Types

0

Google Maps API v3 Geocoder Toolのコードをご覧ください。これはおそらく必要なものです。

ただし、APIに直接リクエストを生成する場合は、http://maps.google.com/maps/api/geocode/jsonでなく、 JavaScriptで正しいことを行う必要があります。 APIは同じドメインにあるため動作しますが、決して実行しないでください。代わりに、Maps JavaScript V3 APIの一部であるGeocoding Serviceを常に使用してください。

このサービスを使用すると、実際にはJSONレスポンスをまったく解析する必要はなく、APIがそれを行い、Geocoding Resultsの配列を持つことになります。そこにはresults[0]が置き換えられるでしょうjson.getJSONArray("Placemark").getJSONObject(0);

上記のジオコーダツールのソースコードを見てみましょう。オブジェクトツリーの代わりに、V3はフラットな配列(address_component)を提供します。各構成要素は、short_name,long_name、配列typesAddress Component Typesです。これらのタイプは、コンポーネントがどのように相互に関係しているかを示します。

また、特定のタイプのコンポーネントが常に存在するとは決して考えないでください。あなたの現在のコードは、応答の中にlocalityが存在するかどうかに盲目的に依存しますが、それは必ずしもそうであるとは限りません。