2017-02-22 2 views
0

J'essaie d'afficher et de centrer une carte pour l'emplacement actuel des utilisateurs. Tout fonctionne correctement si je saisis manuellement une latitude et une longitude codées en dur, mais celles-ci doivent être dynamiques car un utilisateur change souvent d'emplacement.Passer des variables par référence en JavaScript

Je suppose que je commets une erreur de base, mais ma logique me semble correcte. S'il vous plaît vérifier mon travail et laissez-moi savoir ce que je fais mal? La ligne qui est remarquée avec Latitude et Longitude est la ligne que je veux utiliser à la place de la ligne précédente avec les valeurs codées en dur.

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

Pouvez-vous changer votre titre en 'Passing Variables in Javascript'? Java et Javascript ne sont pas la même chose. –

Répondre

0

Vous voulez passer la latitude et la longitude dans votre fonction loadMapScenario comme on le voit ci-dessous

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

Changer votre rappel sur la carte de bing inclure une nouvelle fonction comme « mapUserLocation » ont alors mapUserLocation effectuer les tâches suivantes

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

donc si je comprends bien, la fonction que j'utilise pour obtenir la latitude et la longitude est au mauvais endroit. Je dois déplacer cela dans la fonction "function loadMapScenario"? –

+0

J'ai compris ce que vous disiez et cela règle mon problème. Cela fonctionne bien pour moi maintenant. Merci beaucoup!! –

+0

@CarlAydelotte - désolé, je n'ai pas vu votre premier commentaire plus tôt. Heureux qu'il travaille pour vous, heureux d'aider :) – Phil