Adding Array of Markers in Google Map

匿名 (未验证) 提交于 2019-12-03 02:47:02

问题:

I need some help in creating an array of markers in Google Map so that it can be more efficient, instead of create a marker one by one. I tried the following but it doesn't work. Anyone have advice?

//create array to store a set of location var collection = new Array();  //a set of locations stored in array collection[0] = new google.maps.LatLng(13.742167701649997, 100.50721049308777); collection[1] = new google.maps.LatLng(13.74428, 100.5404525); collection[2] = new google.maps.LatLng(13.744108, 100.543098);  var pointMarkerImage = new Array();//store image of marker in array var pointMarker = new Array();//store marker in array  //create number of markers based on collection.length function setPoint(){ for(var i=0; i<collection.length; i++){  var pointMarkerImage[i] = new google.maps.MarkerImage('marker.png'); var pointMarker[i] = new google.maps.Marker({         position: collection[i],         map: map,         icon: pointMarkerImage[i],         animation: google.maps.Animation.BOUNCE,         title: "collection"+ i      });      google.maps.event.addListener(pointMarker[i], 'click', function()    {               window.open("blog/page01.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes")              };     );     } } 

回答1:

This is my simple code and it works fine. When you click on marker, it will open the Info Window respectively based on that marker's location.

<script> var locations = [      ['Title A', 3.180967,101.715546, 1],      ['Title B', 3.200848,101.616669, 2],      ['Title C', 3.147372,101.597443, 3],      ['Title D', 3.19125,101.710052, 4] ]; var map = new google.maps.Map(document.getElementById('map'), {      zoom: 12,      center: new google.maps.LatLng(3.171368,101.653404),      mapTypeId: google.maps.MapTypeId.ROADMAP });  var infowindow = new google.maps.InfoWindow;  var marker, i;  for (i = 0; i < locations.length; i++) {       marker = new google.maps.Marker({          position: new google.maps.LatLng(locations[i][1], locations[i][2]),          map: map     });      google.maps.event.addListener(marker, 'click', (function(marker, i) {          return function() {              infowindow.setContent(locations[i][0]);              infowindow.open(map, marker);          }     })(marker, i)); } </script>  <div data-role="page" id="map_result">     <div data-role="header" data-position="fixed"><h1>Multiple Marker</h1></div>     <div data-role="content" style="padding:0;">         <div id="map"></div>     </div> </div> 


回答2:

I see a few things:

1) in the for loop, var pointM... should just be pointM... adding the var makes it ignore the set you have outside the for loop.

2) you have a ; after a function that is breaking things.

Try this:

//create array to store a set of location var collection = new Array();  //a set of locations stored in array collection[0] = new google.maps.LatLng(13.742167701649997, 100.50721049308777); collection[1] = new google.maps.LatLng(13.74428, 100.5404525); collection[2] = new google.maps.LatLng(13.744108, 100.543098);  var pointMarkerImage = new Array();//store image of marker in array var pointMarker = new Array();//store marker in array  //create number of markers based on collection.length function setPoint(){   for(var i=0; i<collection.length; i++){      pointMarkerImage[i] = new google.maps.MarkerImage('marker.png');     pointMarker[i] = new google.maps.Marker({             position: collection[i],             map: map,             icon: pointMarkerImage[i],             animation: google.maps.Animation.BOUNCE,             title: "collection"+ i      });      google.maps.event.addListener(pointMarker[i], 'click', function(){       window.open("blog/page01.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes");     }     );   } } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!