简体   繁体   English

如何在谷歌地图api中绘制多个标记

[英]How to draw multiple markers in google map api

Below is my script which is working fine.下面是我的脚本,它运行良好。

In below script,in given line viewMap(40.671531,-73.963588);在下面的脚本中,在给定的行中 viewMap(40.671531,-73.963588); i am displaying the user current location.我正在显示用户当前位置。

Now i want to display multiple markers on map near by my current location.现在我想在我当前位置附近的地图上显示多个标记。 Can any one help me to draw multiple markers near by my current location.任何人都可以帮助我在当前位置附近绘制多个标记。

  <script type="text/javascript">
    var map;
    var marker;
    var infowindow = new google.maps.InfoWindow();
    var geocoder = new google.maps.Geocoder();
    function initialize() {       
          var location = document.getElementById('pickadd');
          var options = { 
          types: ['geocode'],
            componentRestrictions: {country: "IND"}
          };
          var autocomplete = new google.maps.places.Autocomplete(location,options);
          google.maps.event.addListener(autocomplete, 'place_changed', function () {
              var place = autocomplete.getPlace();             
              document.getElementById('PoolLatitude').value = place.geometry.location.lat();
              document.getElementById('PoolLongitude').value = place.geometry.location.lng();
              viewMap(place.geometry.location.lat(),place.geometry.location.lng());           
          }); 
      }

      function viewMap(lat,lng){  
          var myLatlng = new google.maps.LatLng(lat,lng);
          var myOptions = {
             zoom: 14,
             center: myLatlng,
             mapTypeId: google.maps.MapTypeId.ROADMAP
          }
          map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);        
          var MarkImage = new google.maps.MarkerImage("/img/mapicons/icon1.png");
          var marker = new google.maps.Marker({
          draggable: true,
          icon: MarkImage,
          position: myLatlng, 
          map: map,
          title: "Your location"
          });
        var formatted_address = '<img src="/img/pick_up.png" id="pick" class="pickupmap" alt="PickUp here">';
          infowindow.setContent(formatted_address);
          infowindow.open(map, marker);

          google.maps.event.addListener(marker, 'dragend', function (event) {
            geocodePosition(marker.getPosition());
            document.getElementById("PoolLatitude").value = this.getPosition().lat();
            document.getElementById("PoolLongitude").value = this.getPosition().lng();        
        });

        function geocodePosition(pos) {         
            var geocoder= new google.maps.Geocoder();
              geocoder.geocode({
                latLng: pos
              }, function(responses) {              
                if (responses && responses.length > 0) {
                    document.getElementById("PoolLocation").value = responses[0].formatted_address;
                }
              });
        }
      }    
      viewMap(40.671531,-73.963588);      
      google.maps.event.addDomListener(window, 'load', initialize);

  </script>

Use following steps to redraw multiple marker on map:使用以下步骤在地图上重绘多个标记:

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD3feOR_ZOOn407Y0CfRMrxYd2lNaJ_4XM&callback=initMap">
    </script>
<div id="map" style="width:100%;height:500px"></div>
<script>

function initMap() {函数 initMap() {

var Thailand = {
    info: '<strong>Thailand</strong><br>\
                5N/6D  Thailand *INR 8000/-per person <br>\
                <a href="#">Details</a>',
    lat: 15.870032,
    long: 100.99254100000007
};
var Singapore = {
    info: '<strong>Singapore</strong><br>\
                4N/5D Singapore INR 15000/- per person<br>\
                <a href="#">Details</a>',
    lat: 1.3553794,
    long: 103.86774439999999
};
var Bali = {
    info: '<strong>Bali</strong><br>\
                8N/9D Bali - Indonesia , INR 30,000/- per person<br>\
                <a href="#">Details</a>',
    lat: -8.4095178,
    long: 115.18891600000006
};
var srilanka = {
    info: '<strong>Sri Lanka</strong><br>\
                6N/7D Sri Lanka, INR 22,000/- per person<br>\
                <a href="#">Details</a>',
    lat: 7.873053999999999,
    long: 80.77179699999999
};
var maldives = {
    info: '<strong>Maldives</strong><br>\
                3N/4D Maldives, INR 26,000/- per person<br>\
                <a href="#">Details</a>',
    lat: 3.202778,
    long: 73.22068000000002
};
var locations = [
  [Thailand.info, Thailand.lat, Thailand.long, 0],
  [Singapore.info, Singapore.lat, Singapore.long, 1],
  [Bali.info, Bali.lat, Bali.long, 2],
  [srilanka.info, srilanka.lat, srilanka.long, 3],
  [maldives.info, maldives.lat, maldives.long, 4],
];
var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 4,
    center: new google.maps.LatLng(2.986927 , 102.216797),
    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));
}

} }

Note: Don't forget to use map key when you call googleapi.注意:调用 googleapi 时不要忘记使用 map key。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM