API Google Places - запрос подробных сведений о местах undefined

Я пытаюсь получить детали места, используя Библиотеку Google Адресов. Когда вы нажимаете маркер места, я хочу видеть адрес, имя, сайт и т.д.

Я использую следующий учебник: http://code.google.com/apis/maps/documentation/javascript/places.html

Кажется, все идет хорошо. В моем маркере я могу отображать имя и рейтинг, но адрес, сайт и номер телефона отображаются как "undefined". Это потому, что у Google нет информации, которую я запрашиваю в этих местах? Или я сделал что-то не так?

Вот код, который я использую:       var map;     var infowindow;

function initialize() {
 var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);
 map = new google.maps.Map(document.getElementById('map_canvas'), {
 mapTypeId: google.maps.MapTypeId.ROADMAP,
 center: pyrmont,
 zoom: 15
 });
 var request = {
 location: pyrmont,
 radius: 5000,
 types: ['bar']
 };
 infowindow = new google.maps.InfoWindow();
 service = new google.maps.places.PlacesService(map);
 service.search(request, callback);
 }
 function callback(results, status) {
 if (status == google.maps.places.PlacesServiceStatus.OK) {
 for (var i = 0; i < results.length; i++) {
 createMarker(results[i]);
 }
 }
 }
 function createMarker(place) {
 var placeLoc = place.geometry.location;
 var marker = new google.maps.Marker({
 map: map,
 position: place.geometry.location
 });
 google.maps.event.addListener(marker, 'click', function() {
 infowindow.setContent(place.name + "" + place.formatted_address +"" + place.website + "" + place.rating + "" + place.formatted_phone_number);
 infowindow.open(map, this);
 });
 }

Любая помощь или идеи будут очень благодарны.

Приветствия.

JA

1 ответ

Вы выполняете поиск по местам, который не возвращает все поля, которые вы используете:

http://code.google.com/apis/maps/documentation/javascript/places.html#place_search_responses

Чтобы получить адрес, сайт и т.д., вам также нужно позвонить place.getDetails(), передав Place reference. См:

http://code.google.com/apis/maps/documentation/javascript/places.html#place_details_requests

Грубо, ваш код изменится на:

function createMarker(place) {
 var placeLoc = place.geometry.location;
 var marker = new google.maps.Marker({
 map: map,
 position: place.geometry.location
 });
 var request = { reference: place.reference };
 service.getDetails(request, function(details, status) {
 google.maps.event.addListener(marker, 'click', function() {
 infowindow.setContent(details.name + "" + details.formatted_address +"" + details.website + "" + details.rating + "" + details.formatted_phone_number);
 infowindow.open(map, this);
 });
 });
 }

licensed under cc by-sa 3.0 with attribution.