更改谷歌地图方向api V3中的单个标记

时间:2011-01-27 07:23:52

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

我想在谷歌地图中使用DirectionsRender时更改标记图标。我已经从here想出如何将两个标记更改为相同的图标,但我在起点和终点都在寻找自定义图标。有什么想法吗?

编辑:我正在寻找如何为开始和结束标记分配单独的图标。我知道如何为两者改变它,但是使用不同的标记图标证明是困难的。

2 个答案:

答案 0 :(得分:65)

对于那些需要像我一样的例子的人来说,这是一个基本的例子:

 // Map and directions objects
 var map = new google.maps.Map( element, options );
 var service = new google.maps.DirectionsService();
 var directions = new google.maps.DirectionsRenderer({suppressMarkers: true});

 // Start/Finish icons
 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 )
  )
 };

service.route( { origin: origin, destination: destination }, function( response, status ) {
 if ( status == google.maps.DirectionsStatus.OK ) {
  display.setDirections( response );
  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
 });
}

路线请求的响应会根据您路线上的站点数返回一条腿。我只做一条A到B的路线,所以只需要抓住第一条腿,然后找到标记需要去的位置,并为这些点创建标记。

答案 1 :(得分:12)

按照他们在您关联的页面上说的那样:

  • suppressMarkers选项设置为true,以防止显示默认的开始和结束标记
  • 为两个新标记创建images
  • 创建markers,其位置设置为开始和结束位置,图标设置为您创建的位置