更改Google地图方向中的各个标记

时间:2014-07-24 14:09:27

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

我在Google Maps API中添加单个标记时遇到问题。我搜索了很多像以下链接Change individual markers in google maps directions api V3。但我无法在我的代码上实现相同的功能。在suppressMarkers: true的帮助下,我可以阻止默认标记。现在只显示根方向。现在我该如何为起点和终点添加制造商。以下是我的代码。

   function GoogleMap_selected(){

        var lattitude_value= document.getElementById('slectedLat').value;
        var longitude_value= document.getElementById('slectedLon').value;

        var from = new google.maps.LatLng(mylatitude, mylongitude);
        var to = new google.maps.LatLng(lattitude_value, longitude_value);

         var directionsService = new google.maps.DirectionsService();
         var directionsRequest = {
           origin: from,
           destination: to,
           travelMode: google.maps.DirectionsTravelMode.DRIVING,
           unitSystem: google.maps.UnitSystem.METRIC
         };

        this.initialize = function(){
        var map = showMap_selected();

         directionsService.route(
                  directionsRequest,
                  function(response, status)
                  {

                    if (status == google.maps.DirectionsStatus.OK)
                    {
                      new google.maps.DirectionsRenderer({
                        map: map,
                        directions: response,
                        suppressMarkers: true

                      });
                    }
                    else
                        {
                         alert("Unable to retrive route");
                        }
                var leg = response.routes[ 0 ].legs[ 0 ];
                makeMarker( leg.start_location, icons.start, "title" );
                makeMarker( leg.end_location, icons.end, 'title' );
                  }
                );

        }

function makeMarker( position, icon, title ) {
 new google.maps.Marker({
  position: position,
  map: map,
  icon: icon,
  title: title
 });
}

 var icons = {
  start: new google.maps.MarkerImage(
   // URL
   'start.png',
   // (width,height)
   new google.maps.Size( 44, 32 ),
   // The origin point (x,y)
   new google.maps.Point( 0, 0 ),
   // The anchor point (x,y)
   new google.maps.Point( 22, 32 )
  ),
  end: new google.maps.MarkerImage(
   // URL
   'end.png',
   // (width,height)
   new google.maps.Size( 44, 32 ),
   // The origin point (x,y)
   new google.maps.Point( 0, 0 ),
   // The anchor point (x,y)
   new google.maps.Point( 22, 32 )
  )
 };


         var showMap_selected = function(){
            var mapOptions = {
            zoom: 12,
            center: new google.maps.LatLng(lattitude_value, longitude_value),
            mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("selected_map_canvas"), mapOptions);
            return map;
        }
        }

任何人都可以建议我如何在我的代码的开始和结束点添加标记。

1 个答案:

答案 0 :(得分:11)

的变化:

  1. 将map变量传递给makeMarker函数(如DrMolle观察到的那样)
  2. 将图标网址更改为可在我的服务器上运行的网址
  3. 移动添加标记的代码,使其仅在路径请求成功时运行
  4. working fiddle

    screenshot of result

    function GoogleMap_selected() {
    
        var lattitude_value = document.getElementById('slectedLat').value;
        var longitude_value = document.getElementById('slectedLon').value;
    
        var from = new google.maps.LatLng(mylatitude, mylongitude);
        var to = new google.maps.LatLng(lattitude_value, longitude_value);
    
        var directionsService = new google.maps.DirectionsService();
        var directionsRequest = {
            origin: from,
            destination: to,
            travelMode: google.maps.DirectionsTravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.METRIC
        };
    
        this.initialize = function () {
            var map = showMap_selected();
    
            directionsService.route(
            directionsRequest,
    
            function (response, status) {
    
                if (status == google.maps.DirectionsStatus.OK) {
                    new google.maps.DirectionsRenderer({
                        map: map,
                        directions: response,
                        suppressMarkers: true
                    });
                    var leg = response.routes[0].legs[0];
                    makeMarker(leg.start_location, icons.start, "title", map);
                    makeMarker(leg.end_location, icons.end, 'title', map);
    
                } else {
                    alert("Unable to retrive route");
                }
    
            });
    
        }
    
        function makeMarker(position, icon, title, map) {
            new google.maps.Marker({
                position: position,
                map: map,
                icon: icon,
                title: title
            });
        }
    
        var icons = {
            start: new google.maps.MarkerImage(
            // URL
            'http://maps.google.com/mapfiles/ms/micons/blue.png',
            // (width,height)
            new google.maps.Size(44, 32),
            // The origin point (x,y)
            new google.maps.Point(0, 0),
            // The anchor point (x,y)
            new google.maps.Point(22, 32)),
            end: new google.maps.MarkerImage(
            // URL
            'http://maps.google.com/mapfiles/ms/micons/green.png',
            // (width,height)
            new google.maps.Size(44, 32),
            // The origin point (x,y)
            new google.maps.Point(0, 0),
            // The anchor point (x,y)
            new google.maps.Point(22, 32))
        };
    
    
        var showMap_selected = function () {
            var mapOptions = {
                zoom: 12,
                center: new google.maps.LatLng(lattitude_value, longitude_value),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("selected_map_canvas"), mapOptions);
            return map;
        };
    }
    

    代码段

    // 32.715738, -117.1610838
    // 40.7127837, -74.0059413
    var mylatitude = 40.7127837;
    var mylongitude = -74.0059413;
    
    function GoogleMap_selected() {
    
      var lattitude_value = document.getElementById('slectedLat').value;
      var longitude_value = document.getElementById('slectedLon').value;
    
      var from = new google.maps.LatLng(mylatitude, mylongitude);
      var to = new google.maps.LatLng(lattitude_value, longitude_value);
    
      var directionsService = new google.maps.DirectionsService();
      var directionsRequest = {
        origin: from,
        destination: to,
        travelMode: google.maps.DirectionsTravelMode.DRIVING,
        unitSystem: google.maps.UnitSystem.METRIC
      };
    
      this.initialize = function() {
        var map = showMap_selected();
    
        directionsService.route(
          directionsRequest,
    
          function(response, status) {
    
            if (status == google.maps.DirectionsStatus.OK) {
              new google.maps.DirectionsRenderer({
                map: map,
                directions: response,
                suppressMarkers: true
              });
              var leg = response.routes[0].legs[0];
              makeMarker(leg.start_location, icons.start, "title", map);
              makeMarker(leg.end_location, icons.end, 'title', map);
    
            } else {
              alert("Unable to retrive route");
            }
    
          });
    
      }
    
      function makeMarker(position, icon, title, map) {
        new google.maps.Marker({
          position: position,
          map: map,
          icon: icon,
          title: title
        });
      }
    
      var icons = {
        start: new google.maps.MarkerImage(
          // URL
          'http://maps.google.com/mapfiles/ms/micons/blue.png',
          // (width,height)
          new google.maps.Size(44, 32),
          // The origin point (x,y)
          new google.maps.Point(0, 0),
          // The anchor point (x,y)
          new google.maps.Point(22, 32)),
        end: new google.maps.MarkerImage(
          // URL
          'http://maps.google.com/mapfiles/ms/micons/green.png',
          // (width,height)
          new google.maps.Size(44, 32),
          // The origin point (x,y)
          new google.maps.Point(0, 0),
          // The anchor point (x,y)
          new google.maps.Point(22, 32))
      };
    
    
      var showMap_selected = function() {
        var mapOptions = {
          zoom: 12,
          center: new google.maps.LatLng(lattitude_value, longitude_value),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("selected_map_canvas"), mapOptions);
        return map;
      };
    }
    
    function initialize() {
      var instance = new GoogleMap_selected();
      instance.initialize();
    }
    
    google.maps.event.addDomListener(window, 'load', initialize);
    html,
    body,
    #selected_map_canvas {
      height: 100%;
      margin: 0px;
      padding: 0px
    }
    <script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry"></script>
    <div id="panel">
      <input type="text" id="slectedLat" value="32.715738"></input>
      <input type="text" id="slectedLon" value="-117.1610838"></input>
    </div>
    <div id="selected_map_canvas"></div>
    <div id="directions-panel"></div>