【问题标题】:Google Maps Multiple Custom Markers谷歌地图多个自定义标记
【发布时间】:2013-04-22 10:02:25
【问题描述】:

所以我正在尝试学习如何制作谷歌地图。我对javascript知之甚少,但我想在这里学习。

我在网上参考了一段代码,我有点理解如何添加位置、标记和信息窗口,但我正在尝试弄清楚如何为每个标记添加多个自定义图标。

感谢您的帮助。

function initialize() {

        //add map, the type of map
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 6,
            center: new google.maps.LatLng(37.7749295, -122.4194155),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        //add locations
        var locations = [
            ['San Francisco: Power Outage', 37.7749295, -122.4194155],
            ['Sausalito', 37.8590937, -122.4852507],
            ['Sacramento', 38.5815719, -121.4943996],
            ['Soledad', 36.424687, -121.3263187],
            ['Shingletown', 40.4923784, -121.8891586]
        ];

        //declare marker call it 'i'
        var marker, i;

        //declare infowindow
        var infowindow = new google.maps.InfoWindow();

        //add marker to each locations
        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,
            });

            //click function to marker, pops up infowindow
            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                return function() {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }
    }
    google.maps.event.addDomListener(window, 'load', initialize);

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

    有多种方法,最简单的方法是将标记的 icon-property 设置为要显示为标记的图像的 URL。

    样本:

    //modified array with icon-URLs
    var locations = [
                ['San Francisco: Power Outage', 37.7749295, -122.4194155,'http://labs.google.com/ridefinder/images/mm_20_purple.png'],
                ['Sausalito', 37.8590937, -122.4852507,'http://labs.google.com/ridefinder/images/mm_20_red.png'],
                ['Sacramento', 38.5815719, -121.4943996,'http://labs.google.com/ridefinder/images/mm_20_green.png'],
                ['Soledad', 36.424687, -121.3263187,'http://labs.google.com/ridefinder/images/mm_20_blue.png'],
                ['Shingletown', 40.4923784, -121.8891586,'http://labs.google.com/ridefinder/images/mm_20_yellow.png']
            ];
    
    
    
    //inside the loop
    marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                    map: map,
                    icon: locations[i][3]
                });
    

    【讨论】:

      【解决方案2】:
          var locations = [
              ['San Francisco: Power Outage', 37.7749295, -122.4194155],
              ['Sausalito', 37.8590937, -122.4852507],
              ['Sacramento', 38.5815719, -121.4943996],
              ['Soledad', 36.424687, -121.3263187],
              ['Shingletown', 40.4923784, -121.8891586]
          ];
      

      Locations 代表一个地区数组,后面跟着他们的 posicón ,特别是它的经纬度,所以他们会在 google 的地图上定位,并不总是以这种方式发送经纬度,所以你可以接收数据库或 json 。我希望我有所帮助。

      【讨论】:

        【解决方案3】:
            <div id="map"></div>
        
          <script type="text/javascript">          
             function initialize() {
                 //add map, the type of map
                   var mapOptions = {
                       zoom: 5,
                       draggable: true,
                       animation: google.maps.Animation.DROP,
                       mapTypeId: google.maps.MapTypeId.ROADMAP,
                       center: new google.maps.LatLng(51.4964302,-0.1331412), // area location
                       styles:[{"stylers":[{"saturation":-100},{"gamma":1}]},{"elementType":"labels.text.stroke","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.text","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.text","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry","stylers":[{"visibility":"simplified"}]},{"featureType":"water","stylers":[{"visibility":"on"},{"saturation":50},{"gamma":0},{"hue":"#50a5d1"}]},{"featureType":"administrative.neighborhood","elementType":"labels.text.fill","stylers":[{"color":"#333333"}]},{"featureType":"road.local","elementType":"labels.text","stylers":[{"weight":0.5},{"color":"#333333"}]},{"featureType":"transit.station","elementType":"labels.icon","stylers":[{"gamma":1},{"saturation":50}]}]
                   };
                   var mapElement = document.getElementById('map');
                   var map = new google.maps.Map(mapElement, mapOptions);
        
                 //add locations
                     var locations = [
                         ['London office', 51.4964302,-0.1331412,'http://labs.google.com/ridefinder/images/mm_20_red.png'],
                         ['Sausalito', 37.8590937, -122.4852507,'http://labs.google.com/ridefinder/images/mm_20_red.png'],
                         ['Sacramento', 38.5815719, -121.4943996,'http://labs.google.com/ridefinder/images/mm_20_green.png'],
                         ['Soledad', 36.424687, -121.3263187,'http://labs.google.com/ridefinder/images/mm_20_blue.png'],
                         ['Shingletown', 40.4923784, -121.8891586,'http://labs.google.com/ridefinder/images/mm_20_yellow.png']
                     ];
                     //declare marker call it 'i'
                     var marker, i;
                     //declare infowindow
                     var infowindow = new google.maps.InfoWindow();
                     //add marker to each locations
                     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,
                             icon: locations[i][3]
                     });
                     //click function to marker, pops up infowindow
                     google.maps.event.addListener(marker, 'click', (function(marker, i) {
                         return function() {
                             infowindow.setContent(locations[i][0]);
                             infowindow.open(map, marker);
                         }
                     })(marker, i));
                 }
             }
             google.maps.event.addDomListener(window, 'load', initialize);
          </script>
        

        【讨论】:

          猜你喜欢
          • 2015-05-25
          • 2013-08-21
          • 1970-01-01
          • 2015-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多