2012-08-01 5 views
1

Je suis en mesure d'obtenir ma propre longitude et latitude et de les enregistrer à vars:API Google Maps: Utiliser mes propres coords API JavaScript

var myLat = position.coords.latitude; 
var myLong = position.coords.longitude; 

Je ne suis pas sûr de savoir comment les transmettre au code qui nous amène à la position intial de carte sur l'écran:

function initialize() { 
        var mapOptions = { 
         center: new google.maps.LatLng(-34.397, 150.644), 
         zoom: 4, 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 
        var map = new google.maps.Map(document.getElementById("map_canvas"), 
                mapOptions); 
       } 

J'ai besoin pour nourrir myLat et Mylong dans la ligne:

center: new google.maps.LatLng(-34.397, 150.644) 

Im ne sais pas comment s'y prendre. Est-ce que quelqu'un peut-il me montrer la bonne direction?

EDIT: Ajout d'un code complet selon la demande ci-dessous

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=YOUR KEY HERE&sensor=true"></script> 

    <script type="text/javascript"> 

     //MAP 
     function initialize() { 
      var mapOptions = { 
       center: new google.maps.LatLng(-34.397, 150.644), 
       zoom: 9, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      map = new google.maps.Map(document.getElementById("map_canvas"), 
            mapOptions); 
     } 

     //GEOLOCATION 
    var onSuccess = function(position) { 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
       'Longitude: ' + position.coords.longitude + '\n'); 

     var myLat = position.coords.latitude; 
     var myLong = position.coords.longitude; 

     map.setCenter(new google.maps.LatLng(myLat, myLong)) 


    }; 

    // onError Callback receives a PositionError object 
    // 
    function onError(error) { 
     alert('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n'); 
    } 

    navigator.geolocation.getCurrentPosition(onSuccess, onError); 

</script> 

Et HTML:

<body onload="initialize()"> 

<div id="map_canvas" style="width:300px; height:400px;"></div> 

</body 

>

+0

Pourquoi ne pouvez-vous pas faire 'new google.maps.LatLng (myLat, myLng)'? –

Répondre

3

La raison pour laquelle cela ne fonctionne pas est beacuse de la fonction suivante

var onSuccess = function(position) { 

    alert('Latitude: ' + position.coords.latitude + '\n' + 
      'Longitude: ' + position.coords.longitude + '\n'); 

    var myLat = position.coords.latitude; 
    var myLong = position.coords.longitude; 

    map.setCenter(new LatLng(myLat, myLong)); 
}; 

Lorsque vous utilisez

map.setCenter(new LatLng(myLat, myLong)) 

vous devez utiliser

map.setCenter(new google.maps.LatLng(myLat, myLong)) 

Le LatLn L'objet g sera indéfini. L'objet que vous devez utiliser est google.maps.LatLng.

+0

Ah génial oui ça marche (sorte de ... mon application s'est écrasé mais je pense que ce sera une question différente) Merci! – MeltingDog

+0

bonne chance :) –

3

Il est juste

var map; 
function initialize() { 
    //... 
} 

initialize(); 

function initiate_geolocation() { 
    navigator.geolocation.getCurrentPosition(onSuccess); 
} 

function onSuccess(position){ 
    var myLat = position.coords.latitude; 
    var myLong = position.coords.longitude; 
    map.setCenter(new google.maps.LatLng(myLat, myLong)); // edit this line 
} 
initiate_geolocation(); 

Ce n'est pas map.setCenter(new LatLng(myLat, myLong)); instea il devrait être d map.setCenter(new google.maps.LatLng(myLat, myLong));

DEMO.

+0

Merci - J'ai essayé cela et cela ne semble pas fonctionner pour moi. Aussi essayé de placer myLat et myLong là aussi – MeltingDog

+0

ce que votre myLat, myLong contient? –

+0

Numéros de latitude et de longitude numériques complets – MeltingDog

0

Vous pouvez tout simplement passer myLat et Mylong comme argument du constructeur dans google.maps.LatLng. Donc, votre code devrait ressembler à:

function initialize() { 
var mapOptions = { 
center: new google.maps.LatLng(myLat,myLong), 
zoom: 4, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions); 
} 
+0

Merci, j'ai aussi essayé. Ive a ajouté le code complet ci-dessus si cela le rend plus facile – MeltingDog