2017-02-22 5 views
0

Ich versuche, eine Karte für den aktuellen Standort des Benutzers anzuzeigen und zu zentrieren. Alles funktioniert gut, wenn ich manuell eine fest codierte Breite und Länge eintrage, aber diese müssen dynamisch sein, da ein Benutzer häufig seinen Standort ändert.Variablen über Referenz in JavaScript übergeben

Ich vermute, dass ich einen grundlegenden Fehler mache, aber meine Logik scheint mir korrekt zu sein. Bitte überprüfen Sie meine Arbeit und lassen Sie mich wissen, was ich falsch mache? Die mit Latitude und Longitude markierte Zeile ist die Zeile, die ich anstelle der vorherigen Zeile mit den hartcodierten Werten verwenden möchte.

<!DOCTYPE html> 
<html> 
<head> 
    <title>W123</title> 
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> 

</head> 

<body> 
    <div id='printoutPanel'></div> 
    <div id='myMap' style='width: 100vw; height: 100vh;'></div> 

    <script type='text/javascript'> 

     function showlocation() { 
      navigator.geolocation.getCurrentPosition(getLocation); 
     } 

     function getLocation(position) { 
      var latitude = position.coords.latitude; 
      var longitude = position.coords.longitude; 
      } 

     function loadMapScenario() { 
      var mapOptions = { 
       credentials: 'My API key code goes here', 
       center: new Microsoft.Maps.Location(39.1887643719098, -92.8261546188403), 
       //center: new Microsoft.Maps.Location(latitude, longitude), 
       mapTypeId: Microsoft.Maps.MapTypeId.road, 
       zoom: 8 
      }; 

      var map = new Microsoft.Maps.Map(document.getElementById('myMap'), mapOptions); 
      var urlTemplate = 'http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-{timestamp}/{zoom}/{x}/{y}.png'; 
      var timestamps = ['900913-m50m', '900913-m45m', '900913-m40m', '900913-m35m', '900913-m30m', '900913-m25m', '900913-m20m', '900913-m15m', '900913-m10m', '900913-m05m', '900913']; 
      var tileSources = []; 
      for (var i = 0; i < timestamps.length; i++) { 
       var tileSource = new Microsoft.Maps.TileSource({ 
        uriConstructor: urlTemplate.replace('{timestamp}', timestamps[i]) 
       }); 
       tileSources.push(tileSource); 
      } 
      var animatedLayer = new Microsoft.Maps.AnimatedTileLayer({ mercator: tileSources, frameRate: 500 }); 
      map.layers.insert(animatedLayer); 
     } 

    </script> 
    <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experimental&callback=loadMapScenario' async defer></script> 
</body> 
</html> 
+2

Können Sie Ihren Titel zu 'Weitergabe von Variablen in Javascript' ändern? Java und Javascript sind nicht dasselbe. –

Antwort

0

Sie wollen in der Breite und Länge in Ihre loadMapScenario Funktion zu übergeben, wie unten

function loadMapScenario(latitude,longitude) { 
     ....your code here.... 
} 

ändern Rückruf in der bing Karte enthalten, um eine neue Funktion wie „mapUserLocation“ gesehen, dann haben mapUserLocation ausführen die folgenden Aufgaben

function mapUserLocation() { 
    // code here to get the latitude and longitude from users position 
    loadMapScenario(latitude,longitude); 
} 
+0

Wenn ich also richtig verstehe, ist die Funktion, die ich verwende, um den Breiten- und Längengrad zu erhalten, falsch. Ich muss das innerhalb der "function loadMapScenario" -Funktion verschieben? –

+0

Ich habe herausgefunden, was Sie gesagt haben und das behebt mein Problem. Es funktioniert jetzt gut für mich. Ich danke dir sehr!! –

+0

@CarlAydelotte - Entschuldigung, ich habe Ihren ersten Kommentar nicht früher gesehen. Froh, dass es für dich arbeitet, glücklich zu helfen :) – Phil

Verwandte Themen