2010-11-05 11 views
11

hago carga lenta de la versión 3 del API de Google Maps JavaScriptcarga perezosa Google Maps API v3 jQuery devolución de llamada

La documentación dice acerca de poner como un parámetro de devolución de llamada en la url el nombre de la función, que será ejecutado, cuando el script se ha cargado

$(document).ready(function(){ 
    var s = document.createElement("script"); 
    s.type = "text/javascript"; 
    s.src = "http://maps.google.com/maps/api/js?v=3&sensor=true&callback=gmap_draw"; 
    $("head").append(s); 
}); 

Debo definir la función gmap_draw().

Cuando encierre esta función en el bloque domready, no estará visible.

¿Alguna solución alternativa de este problema? (excepto al poner la función fuera del bloque domready)

Respuesta

20

Como la devolución de llamada debe ser global, puede hacer una accediendo a window desde el controlador de listo.

$(document).ready(function(){ 
    var s = document.createElement("script"); 
    s.type = "text/javascript"; 
    s.src = "http://maps.google.com/maps/api/js?v=3&sensor=true&callback=gmap_draw"; 
    window.gmap_draw = function(){ 
     alert ("Callback code here"); 
    }; 
    $("head").append(s); 
}); 
+0

¿No hay manera de introducir un nombre de espacio de nombres de devolución de llamada? Como dijiste, la función anterior es global, por lo que es más legible sacarla del bloque jquery. Buen enfoque, gracias por compartir – astropanic

+0

Si por devolución de llamada con nombre de acceso ¿quiere decir definir una devolución de llamada en un objeto "myNamespace" (o similar)? –

+0

supongamos que tenemos un objeto gmapsFactory, y quiero ejecutar un gmapsFactory.init() – astropanic

32

Otra opción es utilizar Google Loader:

$.getScript('https://www.google.com/jsapi', function() 
{ 
    google.load('maps', '3', { other_params: 'sensor=false', callback: function() 
    { 
     // Callback code here 
    }}); 
}); 
+0

Perfecto para usar dentro de clases personalizadas que carguen el script ellos mismos. Gracias :) – Archer

+0

Gracias esto funciona perfecto – Orlando

+0

Guardado el día: D – yuva

Cuestiones relacionadas