0

我有一个问题,我正在尝试使用 Google 地图创建悬停效果,您将鼠标悬停在右侧的 div 上,相应的地图标记会增加大小。我正在尝试使用此处讨论的技术:Change marker size in Google maps V3

但这并没有那么有用,因为它正在构建一个新的标记。我只是想扩大我现有的标记。我正在尝试做这样的事情:

var aMap = $container.googleMapClient("map");
var layer = aMap.layers[iconLayer];
layer.points[iconLayer].marker.getIcon().size = new google.maps.Size(45,33);

但不幸的是,这并没有改变可见的大小。如果我在运行时检查图层,大小确实发生了变化。这种行为是不允许的吗?我真的必须破坏图层并渲染一个更大的图层,然后在鼠标悬停时做相反的事情吗?任何帮助,将不胜感激。

4

2 回答 2

1
  1. 创建两个不同的markerImages,一个默认一个用于悬停。(文档:https ://developers.google.com/maps/documentation/javascript/reference?hl=en#MarkerImage )

  2. 使用 google.maps.Marker.setIcon() 在悬停时交换 markerImage(文档:https ://developers.google.com/maps/documentation/javascript/reference?hl=en#Marker )

这是一个示例,如何使用 markerImages:https ://google-developers.appspot.com/maps/documentation/javascript/examples/icon-complex

marker.getIcon().size 是只读的,所以你不能在这里设置新的大小。并且 google.maps.Size(45,33) 不会将您的图像拉伸到新尺寸,而只会更改图像的剪裁。

于 2012-09-04T22:30:44.963 回答
1

您需要使用MarkerImagescaledSize上的属性。

正如 LeJared 所说,您需要创建两个不同的MarkerImage对象,并在它们之间进行交换。

MarkerImage对象是不可变的,因此您将无法动态更改大小。更一般地,在 Maps API 中,需要使用 set() 函数设置属性,否则 API 将看不到更新。

于 2012-09-05T03:55:21.327 回答