2010-05-07 6 views
0

J'espère que quelqu'un pourra m'aider sur ce que je pense être une réponse facile, mais je n'arrive tout simplement pas à comprendre.javascript geolocation et googlemaps

J'essaie de piéger le lat de géolocalisation et à long et placez-le dans les cartes google api

Jusqu'à présent, j'ai

var myOptions = { 
    zoom:7, 
    trips:1, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    var map = new google.maps.Map(document.getElementById("map"), myOptions); 
    directionsDisplay.setMap(map); 

    var request = { 
     origin: 'newyork' 
     destination: 'deleware', 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

Cela fonctionne bien pour ce que je veux. Cependant, je veux être en mesure de changer origin aux utilisateurs lat long en utilisant le script suivant de google.maps.api.

leur code est:

if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); 
     var placeMarker = new google.maps.Marker({ 
     position: initialLocation, 
     map: map, 
     }); 
     map.setCenter(initialLocation); 
    }, function() { 
     handleNoGeolocation(browserSupportFlag); 
    }); 
    } else { 
    // Browser doesn't support Geolocation 
    handleNoGeolocation(); 
    } 

    function handleNoGeolocation() { 
    initialLocation = newyork; 
    map.setCenter(initialLocation); 
    } 

Je veux tirer le

navigator.geolocation.getCurrentPosition(function(position) { 
     initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); 

et l'affecter à deux variables, 2 myLat et myLong. Je veux donc être en mesure de changer mon script Orignal de

var request = { 
     origin: 'newyork' 
     destination: 'deleware', 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

à

var request = { 
     origin: myLat,myLong 
     destination: 'deleware', 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

-t-il un sens ..?

J'ai actuellement un cochon avec elle et que je ne suis pas un développeur JS c'est ce que je pense, devrait être un peu simple de codage que je perdre la bataille avec ..

Toutes les pensées. ?

acclame douglas pour la réponse rapide.

J'ai trouvé cet exemple de site Web à partir d'une question précédente qui pose un peu de lumière. site est http://npdoty.name/location/

Son exemple se présente comme suit:

navigator.geolocation.getCurrentPosition(function(position){ 
    var lat = position.coords.latitude; 
    var lon = position.coords.longitude; 
    var marker = new GMarker(new GLatLng(lat, lon)); 

    var jsMap = new GMap2(document.getElementById("jsMap")); 
    jsMap.addOverlay(marker); 
},function(error){ 
//use error.code to determine what went wrong 
}); 

Puis-je sortir de cet exemple et faire quelque chose de similaire à:

var request = { 
navigator.geolocation.getCurrentPosition(function(position){ 
    var lat = position.coords.latitude; 
    var lon = position.coords.longitude; 
    var myOrigin = new Gorigin(new GLatLng(lat, lon)); 

    origin: myOrigin, 
    destination: 'deleware', 
    travelMode: google.maps.DirectionsTravelMode.DRIVING 

};

merci beaucoup

+0

Vous devez déplacer 'var request = {' _inside_ le callback 'getCurrentPosition'. Vous voudrez peut-être lire le fonctionnement des callbacks, mais en gros, vous allez faire tout le travail que vous avez dans votre autre code de test comme réponse à l'obtention de l'emplacement de l'utilisateur. Bonne chance! – npdoty

Répondre

0

L'une des choses qui peuvent causer un problème est la façon dont vous essayez de passer le myLat et les variables Mylong.

La valeur transmise à l'origine doit être un objet LatLng.

à savoir

var myLat = "12.345"; 
var myLng = "54.321"; 
var myLatLng = new google.maps.LatLng(myLat, myLng); 

var request = { 
    origing: myLatLng, 
    desitination... 
    etc. 
} 

Le plus gros problème étant que pour transmettre les valeurs, vous avez besoin d'être formaté en tant que tel:

var request = { 
    something: value, 
    somethingElse: anotherValue, 
    evenMore: bigValue 
} 

Notez les virgules après chaque ligne.Cela casse dans votre exemple à cause de l'endroit où vous avez placé la vôtre dans la valeur d'origine, ce qui crée une confusion dans la propriété.

Je vais continuer à le regarder, mais j'espère que cela aidera.

Questions connexes