Pregunta

Estoy tratando de cargar dos scripts con el $.getScript función de obtener el script de mapa de Google, luego, después de que se cargue, obtengo otro script (goMap) que hace que los applets de mapas sean fácilmente para hacer.

Sin embargo, cuando se carga, el primer script de obtener la API de Google Map es buena, luego el segundo script devuelve un error de análisis y muestra esto:

TypeError: 'Undefined' no es un constructor '

Sin embargo, no sé de dónde se refiere eso o a qué línea, creo que debe estar tratando de ejecutar el geocoder en este archivo (primera línea después (function($){:

http://www.pittss.lv/jquery/gomap/js/jquery.gomap-1.3.2.js

Aquí está mi código:

$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function()
{
    $.getScript('../js/gomap.js').done(function()
    {
            // this never gets called
            alert('gomap loaded');
    }).fail(function(jqxhr, settings, exception)
    {
        alert(exception); // this gets shown
    });
}).fail(function()
{
    alert('failed to load google maps');
});

Intenté cambiar la configuración de Ajax para establecer async a false, pero no ayudó en absoluto.

¿Fue útil?

Solución

El error es causado por el hecho de que la API de Google Maps espera cargarse en la cabeza, utilizando <script src="http://maps.google.com/maps/api/js?sensor=true"></script>.

Si no puede hacer eso por alguna razón, todavía hay esperanza. La API de Google Maps no funciona, porque usa document.write para inyectar una dependencia en la página. Para que el código funcione, puede sobrescribir al nativo document.write método.

Manifestación: http://jsfiddle.net/zmtmr/

var doc_write = document.write; // Remember original method;
document.write = function(s) {$(s).appendTo('body')};
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function() {
    $.getScript('../js/gomap.js').done(function() {
        alert('gomap loaded');
        document.write = doc_write; // Restore method
    }).fail(function(jqxhr, settings, exception) {
        alert(exception); // this gets shown
        document.write = doc_write; // Restore method
    });
}).fail(function() {
    alert('failed to load google maps');
});

Otros consejos

@LolWut intenta

$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function()
{
    alert(11);
    $.getScript('http://www.pittss.lv/jquery/gomap/js/jquery.gomap-1.3.2.js').done(function()
    {
            // this never gets called
            alert('gomap loaded');
    }).fail(function(jqxhr, settings, exception)
    {
        alert(exception); // this gets shown
    });
}).fail(function()
{
    alert('failed to load google maps');
});

Si esto funciona, entonces eres un camino relativo ../js/gomap.js ¡Está Mal!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top