2012-03-01 3 views
8

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

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

Все, кажется, идет довольно хорошо. В моем маркере я могу отображать имя и рейтинг, но адрес, сайт и номер телефона отображаются как «неопределенные». Это потому, что у 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 + "<br />" + place.formatted_address +"<br />" + place.website + "<br />" + place.rating + "<br />" + place.formatted_phone_number); 
     infowindow.open(map, this); 
    }); 
    } 

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

Cheers.

JA

ответ

17

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

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

Для того, чтобы получить адрес, веб-сайт, и т. д., вам также необходимо позвонить place.getDetails(), пройдя по адресу 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 + "<br />" + details.formatted_address +"<br />" + details.website + "<br />" + details.rating + "<br />" + details.formatted_phone_number); 
     infowindow.open(map, this); 
     }); 
    }); 
    } 
+0

Вот и все. Огромное спасибо. Я действительно ценю твою помощь. – Jim

+0

Нет проблем! Рад, что я мог бы помочь :) –

+0

привет .. Я столкнулся с той же проблемой и пробовал это решение. но не смог получить результат ». service.getDetails (запрос, функция (подробности, статус)», где объявить эту служебную переменную? Мне нужно объявить это снова в функции создания маркера? – Thakur

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