Adding Array of Markers in Google Map

后端 未结 3 495
南笙
南笙 2020-12-24 10:15

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

相关标签:
3条回答
  • 2020-12-24 10:37

    I copied Mr Qiqi Abaziz and improved a bit. This is full version

    <script type="text/javascript">
    
    function initMap() {
    
        var locations = [
             ['Title A', 3.180967,101.715546],
             ['Title B', 3.200848,101.616669],
             ['Title C', 3.147372,101.597443],
             ['Title D', 3.19125,101.710052]
        ];
        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>
    
    <script async defer
            src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=YOURAPIKEY=initMap">
    </script>
    
    
    <style type="text/css">
      #map { height: 400px;
        margin-left:auto;
        margin-right:auto;
        text-align:left;
        width: 80%;}
    </style>
    
    <div id="map"></div>
    
    0 讨论(0)
  • 2020-12-24 10:47

    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");
        }
        );
      }
    }
    
    0 讨论(0)
  • 2020-12-24 10:58

    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>
    
    0 讨论(0)
提交回复
热议问题