2010-12-22 5 views
5

Ich benutze die Google Maps API und habe die Beispiele kopiert und bin mit einer Funktion namens "initialize" gelandet, die aus dem Body Onload aufgerufen wird.Google Maps API 3 Aufruf von initialize ohne Body Onload

Ich verwende die Karten in einigen verschiedenen Benutzersteuerelementen, die in Inhaltsplatzhalter platziert werden, so dass das body-Tag in der Masterseite ist.

Gibt es eine Möglichkeit, initialize direkt in der usercontrol aufzurufen, anstatt ein onload auf der masterpage zu platzieren? Idealerweise möchte ich, dass mein Benutzersteuerelement ein eigenständiges Steuerelement ist, das ich einfach in Seiten einfügen kann, ohne zu versuchen, auf den Masterseitenkörper-Onload zuzugreifen.

Ich habe versucht, die Initialize-Funktion von meiner Seite laden des Benutzersteuerelements (durch Hinzufügen eines Start-up-Skript), aber die Karte wird nicht angezeigt.

Irgendwelche Vorschläge?

Mein Code:

<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) 

      } 
     } 

    } 
} 

und auf meiner Test-Masterseite:

<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

können Sie mit diesem Link http://stackoverflow.com/questions/29792518/why-didnt-work-my-classic-asp-source-code helfen – pcs

Antwort

2

Danke für die Antwort, aber ich habe es endlich so gemacht:

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

Dies ist, wie ich es tun: (dieses Skript Sie in der Usercontrol verwenden)

<script type="text/javascript"> 

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