谷歌地图,传递地图功能

时间:2016-09-30 15:37:46

标签: javascript google-maps

我试图进入地图中的第一个市场,但我无法使其发挥作用。

首先,我将标记存储在一个数组中,此时我只需要第一个,稍后我将创建整个逻辑。

这是代码:

 var geocoder;
   var map;
   var markersArray = [];

 //Initialization
 function initMap() {

   var map = new google.maps.Map(document.getElementById('map'), {
     zoom: 16,
     center: {lat: 14.601313, lng: -90.519114},
   });

   map.addListener('click', function(e) {
     placeMarkerAndPanTo(e.latLng, map);
   });

 }

 //Add marker function
 function placeMarkerAndPanTo(latLng, map) {
      marker = new google.maps.Marker({
     position: latLng,
     map: map
   });
    markersArray.push(latLng);
    map.panTo(latLng);
 }

 //Button: click move to the very first marker
 $(document).ready(function(){
     $('#MyButton').click(function(){
 alert("click");
       alert(markersArray[0].lat());
       map.panTo(markersArray[0].lat(),markersArray[0].lng());
     });
   });

修正:

 $(document).ready(function(){
     $('#MyButton').click(function(){
       if (markersArray.length > 0){

         map.setCenter(markersArray[0]);
     }
       //map.fitBounds(markersArray[0].lat(),markersArray[0].lng());
     });
   });

1 个答案:

答案 0 :(得分:1)

您的地图变量是初始化函数的本地变量(至少是包含实际地图的变量)。全局映射变量永远不会初始化。

变化:

var map;
//Initialization
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {

要:

var map;
//Initialization
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {

proof of concept fiddle