2011-05-02 21 views
5

Ok para que el usuario elija el país, luego a través de los widgets de autocompletar pueden elegir el distrito, ciudad y área en la que viven. Los valores que han elegido están concatenados en una dirección que debería usarse para llamar a la API de Google Maps y mostrar un mapa que marca la dirección ... Desafortunadamente, esto no funciona ... Obtengo esta excepción en Firebug:Mostrando un google maps que muestra la dirección elegida

excepción no detectada: [Excepción. .. "Componente devolvió el código de fallo: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMViewCSS.getComputedStyle]" nsresult: "0x80004005 (N S_ERROR_FAILURE)" ubicación: "JS marco :: http://maps.gstatic.com/intl/en_us/mapfiles/api-3/4/11a/main.js :: :: Xk línea 55" de datos: no]

Aquí está mi código:

una etiqueta de script con este src="http://maps.google.com/maps/api/js?sensor=false"

var address = selectedArea + ', ' + selectedCity + ', ' + selectedDistrict + ', Lebanon'; 

var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({ 'address': address }, function (results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     var map = new google.maps.Map($("#addressMap")); 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
}); 

¿Qué está pasando?

Respuesta

22

Cuando crea el objeto de mapa, le da un objeto jQuery pero exceptúa un objeto DOM. Prueba el objeto DOM en sí mismo.

He añadido algunas opciones también, nivel de zoom y tipo de mapa.

Aquí es el código final:

var address = selectedArea + ', ' + selectedCity + ', ' + selectedDistrict + ', Lebanon'; 

var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({ 'address': address }, function (results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     var mapOptions = { zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById('addressMap'), mapOptions); 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
}); 
+0

perfecto! ¡Trabajó exactamente como yo quería! Gracias :) – Kassem

+0

Tenía la impresión de que document.getElementById ('addressMap') era equivalente a $ ('div # addressMap'). Claramente no. Gracias por ayudarme. –

+1

@AdamWaite 'document.getElementById()' devuelve un objeto DOM, '$()' devuelve un objeto jQuery. –

Cuestiones relacionadas