2010-12-22 12 views
5

Estoy usando la API de google maps y he copiado los ejemplos y he terminado con una función llamada "initialize" que se llama desde el cuerpo en carga.API de Google Maps 3 Cómo llamar a inicializar sin ponerlo en onload de cuerpo

Estoy usando los mapas en algunos controles de usuario diferentes, que se colocan dentro de los marcadores de posición de contenido, por lo que la etiqueta de cuerpo está en la página maestra.

¿Hay alguna forma de invocar la inicialización directamente en el control de usuario en lugar de tener que realizar una carga en la página maestra? Idealmente, quiero que mi control de usuario sea un control independiente que puedo simplemente insertar en las páginas sin intentar acceder a la carga del cuerpo de la página maestra.

He intentado llamar a la función de inicialización desde la carga de mi página del control de usuario (agregando un script de inicio), pero el mapa no aparece.

¿Alguna sugerencia?

Mi código:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">/script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
var map; 
var geocoder; 
function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(51.8052184317649, -4.965819906250006); 
    var myOptions = { 
     zoom: 8, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    $.ajax({ 
     type: "POST", 
     url: "/GoogleMapsService.asmx/GetPointers", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     beforeSend: function() { 
      $(".loadingData").html("<p>Loading data..</p>"); 
     }, 
     complete: function() { 
      $(".loadingData").html(""); 
     }, 
     cache: true, 
     success: mapPoints, 
     error: onError 
    }); 
} 
function onError(xhr, ajaxOptions, thrownError) { 
    alert(xhr.status); 
    alert(xhr.responseText); 
} 
function mapPoints(response) { 

    if (response.d != null) { 
     if (response.d.length > 0) { 
      for (var i = 0; i < response.d.length; i++) { 

       plotOnMap(response.d[i].Id, response.d[i].Name, 
        response.d[i].Lat, response.d[i].Long, 
        response.d[i].ShortDesc) 

      } 
     } 

    } 
} 

y en mi página principal prueba:

<body onload="initialize()"> 
<form runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
<asp:ContentPlaceHolder ID="MainContent" runat="server"> 
</asp:ContentPlaceHolder> 
</form> 
</body> 
+0

puede ayudar con este enlace http://stackoverflow.com/questions/29792518/why-didnt-work-my-classic-asp-source-code – pcs

Respuesta

2

Gracias por la respuesta, pero finalmente lo hice de esta manera:

<script type="text/javascript"> 
    window.onload = function() { 
     initialize(); 
    } 
</script> 
1

Esto es cómo lo hago: (este script puede utilizar en el control de usuario)

<script type="text/javascript"> 

      $(document).ready(function() { 
      if ($('#map_canvas').length != 0) { 
      //google map stuff here 
      } 
     }); 
    </script> 
Cuestiones relacionadas