Google地图 - 更改图层图标大小

时间:2012-09-04 14:58:13

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

我有一个问题,我正在尝试使用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);

但不幸的是,这并没有改变可见尺寸。如果我在运行时检查图层,则确实会更改大小。这样的行为不允许这样吗?我是否真的必须销毁图层并渲染更大的图层,然后在mouseout上执行相反的操作?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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

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

    marker.getIcon()。size是readonly,因此您无法在此处设置新大小。并且google.maps.Size(45,33)不会将图像拉伸到新尺寸,而只会更改图像的剪裁。

答案 1 :(得分:1)

您需要使用MarkerImage上的scaledSize属性。

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

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