将标记图像从v2转换为API V3

时间:2013-01-08 16:04:06

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

我正在尝试转换为API v2

编写的以下代码
<!--- Add position and date information --->
var trackIcon = new GIcon({image:"/images/www2/icons/map_track_marker.png"});
trackIcon.iconSize = new GSize(6,6);
trackIcon.iconAnchor = new GPoint(3,3);
for (var i=0; i<trackArray.length;i++)
{
map.addOverlay(new GMarker(trackArray[i],{title:trackArrayInfo[i],icon:trackIcon}));
}

到V3,但没有成功。这是我不成功的尝试:

<!--- Add position and date information --->
var trackIcon = new google.maps.Icon({image:"/images/www2/icons/map_track_marker.png"});
trackIcon.iconSize = new google.maps.Size(6,6);
trackIcon.iconAnchor = new google.maps.Point(3,3);                          
for (var i=0; i<trackArray.length;i++)
{
   new google.maps.Marker(trackArray[i], {title:trackArrayInfo[i],icon:trackIcon}).setMap(map);
}

有人可以帮我这个吗?我变得无望:(

3 个答案:

答案 0 :(得分:3)

图标对象在API v3中没有imageiconSizeiconAnchor属性。相反,他们只是urlsizeanchor

您还需要将新标记的结果分配给变量。我假设你现在得到了一个JS错误,虽然你的问题中没有它(如果有的话可能会有用)。

/* Add position and date information */
var trackIcon = new google.maps.Icon({
    url :"/images/www2/icons/map_track_marker.png",
    size : new google.maps.Size(6,6),
    anchor : new google.maps.Point(3,3)
});

for (var i=0; i<trackArray.length;i++)
{
   var marker = new google.maps.Marker({
          position: trackArray[i],
          map: map, 
          title: trackArrayInfo[i], 
          icon: trackIcon
   });
}

答案 1 :(得分:1)

/* Add position and date information */
for (var i=0; i<trackArray.length;i++)
{
   var marker = new google.maps.Marker({
    position: trackArray[i],
    map: map, 
    title: trackArrayInfo[i],                                        
    icon: "/images/www2/icons/map_track_marker.png",
    size: new google.maps.Size(6,6),
    anchor: new google.maps.Point(3,3)
   });
}

它的工作原理如下。感谢@duncan的帮助!

答案 2 :(得分:1)

如果其他人遇到与我相同的相关问题并用Google搜索她的方式,似乎在当前版本(3.11)中没有google.maps.Icon而是google.maps.MarkerImage构造函数。之前的答案如下:

for (var i=0; i<trackArray.length;i++)
{
  var marker = new google.maps.Marker({
    position: trackArray[i],
    map: map, 
    title: trackArrayInfo[i],                                        
    icon: new google.maps.MarkerImage(
      "/images/www2/icons/map_track_marker.png", // url
      new google.maps.Size(6,6), // size
      new google.maps.Point(0,0), // origin
      new google.maps.Point(3,3), // anchor
      new google.maps.Size(6,6) // resized size
    )
  });
}

虽然没有在文档中提及,所以我不确定这是否是官方的,但官方.Icon已经消失,这对我有用。