2016-04-24 8 views
0

Google Map APIを使用して小さなプロジェクトを実行しようとしています。問題はマップ上の場所の名前を取得する方法が見つからないことです私はそれをクリックします。場所によっては、内部に絵のあるもの(博物館、レストラン、モニュメントなど)を表しています。 Like thisGoogle Map APIは場所の名前を取得できません

この図では、地図のデフォルトアクションは、クリックするとinfo-windowsを開くことです場所の名前で、それはまさに私が望むものですが、これはデフォルトの反応であるため、名前を「抽出する」(他の場所に使用する)解決策はありません...

私は試しました

var service = new google.maps.places.PlacesService(map); 

google.maps.event.addListener(map, 'click', function(event) { 
    getAddress(event.latLng); 
}); 

function getAddress(latLng) { 
    geocoder.geocode({'latLng': latLng}, 
    function(results, status) { 
     if(status === google.maps.GeocoderStatus.OK) { 
      var arrayLength = results.length; 

      for (var i = 0; i < arrayLength; i++) { 
       var request = { 
        placeId: results[i].place_id_id 
       }; 
       service.getDetails(request, callback); 
      } 
     } 
    }); 
} 

function callback(place, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
     console.log(place); 
    } 
} 

しかし、唯一のprecisedの事:次のコードでそれを取得します住所が返されます(例: "37 Phillip St、Sydney NSW 2000、Australie")が、場所の名前は決してありません。

そして私は本当にGoogleで何も見つからなかっました、

はあなたの助けをありがとう...本当に奇妙ですね! :)

答えて

0

あなたが提供したコードに従って、あなたは実際に必要なデータを得ることができるPlaceDetailsを使用しています。 Places Details Results docs

成功したgetDetails()呼び出しはPlaceResultオブジェクトを返します。

ここで、PlaceResultオブジェクトには、必要な情報がほとんどあります。それをテストしたが、それはそうのような構造を有しているaddress_components性質を持っていない(これにGeocoder response sample呼ばれる):

"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 County", 
       "short_name" : "Santa Clara County", 
       "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" ] 
      } 
     ] 

と単にドキュメントに記述されてもnameプロパティを:

場所の名前です。

PlaceDetailsリクエストの結果を調整するだけで、あなたはそれを見つけることができます。お役に立てれば。がんばろう。

+0

どのように@エレクロですか?あなたはこれを解決できましたか? :) –

関連する問題