2012-03-01 17 views
8

Estoy tratando de recuperar detalles de lugares con la Biblioteca de Google Places. Al hacer clic en el marcador de lugar yo quiero ser capaz de ver la dirección, nombre, sitio web, etcAPI de Google Places - Solicitud de detalles de lugares undefined

estoy usando el siguiente tutorial: http://code.google.com/apis/maps/documentation/javascript/places.html

Todo parece ir bastante bien. En mi marcador puedo mostrar el nombre y la calificación, pero la dirección, el sitio web y el número de teléfono aparecen como 'indefinidos'. ¿Esto es porque Google no tiene la información que estoy solicitando en estos lugares? ¿O he hecho algo mal?

Aquí está el código que estoy usando: 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); 
    }); 
    } 

Cualquier ayuda o ideas serán muy apreciados.

Saludos.

JA

Respuesta

17

Estás haciendo una búsqueda de lugar, que no devuelve todos los campos que está utilizando:

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

Con el fin de obtener la dirección, página web, etc., también deberás llamar al place.getDetails(), pasando el reference del Lugar. Ver:

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

A grandes rasgos, el código podría cambiar a:

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

Eso es todo. Muchas gracias. Realmente aprecio tu ayuda. – Jim

+0

¡Sin problemas! Me alegro de poder ayudar :) –

+0

hola ... estoy enfrentando el mismo problema e intenté con esta solución. pero no se puede obtener el resultado. "service.getDetails (solicitud, función (detalles, estado)" dónde declarar esta variable de servicio? ¿necesito declarar esto de nuevo en la función de creación de marcador? – Thakur

Cuestiones relacionadas