我有一个问题,我正在尝试使用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上执行相反的操作?任何帮助将不胜感激。
答案 0 :(得分:1)
创建两个不同的markerImages,一个默认为一个用于悬停。 (文件:https://developers.google.com/maps/documentation/javascript/reference?hl=en#MarkerImage)
使用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是readonly,因此您无法在此处设置新大小。并且google.maps.Size(45,33)不会将图像拉伸到新尺寸,而只会更改图像的剪裁。
答案 1 :(得分:1)
您需要使用MarkerImage上的scaledSize
属性。
正如LeJared所说,你需要创建两个不同的MarkerImage
对象,并在它们之间进行交换。
MarkerImage
个对象是不可变的,因此您无法动态更改大小。更常见的是,在Maps API中,需要使用set()函数设置属性,否则API将无法看到更新。