2012-10-02 5 views
21

Dans mon projet, je souhaite déplacer le centre de la carte vers de nouvelles coordonnées. Voici le code que j'ai pour la carteDéplacer google map centre javascript api

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

    } 

La fonction moveToLocation ne s'appelle, mais la carte ne sommes pas le centre. Une idée de ce qui me manque?

Répondre

48

Votre problème est que dans moveToLocation, vous utilisez document.getElementById pour essayer d'obtenir l'objet Map, mais que vous seul obtient un HTMLDivElement, pas l'élément google.maps.Map vous attendez. Donc, votre variable map n'a pas de fonction panTo, c'est pourquoi cela ne fonctionne pas. Ce dont vous avez besoin est d'écureuil la variable map quelque part, et cela devrait fonctionner comme prévu. Vous pouvez simplement utiliser une variable globale comme ceci:

var map;  // global variable 

function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(0, 0), 
     zoom: 4, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    // assigning to global variable: 
    map = new google.maps.Map(document.getElementById("map_canvas"), 
     mapOptions); 
} 

function moveToLocation(lat, lng){ 
    var center = new google.maps.LatLng(lat, lng); 
    // using global variable: 
    map.panTo(center); 
} 

Voir travail jsFiddle ici: http://jsfiddle.net/fqt7L/1/

+0

Merci cher monsieur – taormania

0

Afficher l'API Google Maps à l'aide dynamique, récupérer les données dans la base de données pour afficher la place, lat, long et à Montrez le marqueur de carte au centre en utilisant AngularJS. Fait par Sureshchan ...

Screenshot of Google Maps

$(function() { 
    $http.get('school/transport/scroute/viewRoute?scRouteId=' + scRouteId).success(function(data) { 
     console.log(data); 

     for (var i = 0; i < data.viewRoute.length; i++) { 
      $scope.view = []; 
      $scope.view.push(data.viewRoute[i].stoppingName, data.viewRoute[i].latitude, data.viewRoute[i].longitude); 
      $scope.locData.push($scope.view); 
     }    

     var locations = $scope.locData; 
     var map = new google.maps.Map(document.getElementById('map'), {      
      mapTypeId : google.maps.MapTypeId.ROADMAP 
     }); 
     var infowindow = new google.maps.InfoWindow(); 
     var bounds = new google.maps.LatLngBounds(); 
     var marker, j; 

     for (j = 0; j < locations.length; j++) { 
      marker = new google.maps.Marker({ 
       position : new google.maps.LatLng(locations[j][1], locations[j][2]), 
       map : map 
      }); 

      google.maps.event.addListener(marker, 'click', (function(marker, j) { 
       bounds.extend(marker.position); 
       return function() { 
        infowindow.setContent(locations[j][0]); 
        infowindow.open(map, marker); 
        map.setZoom(map.getZoom() + 1); 
        map.setCenter(marker.getPosition()); 
       } 
      })(marker, j)); 
     }; 
     map.fitBounds(bounds); 
    }); 
}); 
+1

C'est une question de 4 ans avec réponse acceptée. – Ollaw