【问题标题】:Google Maps - Change layer icon size谷歌地图 - 更改图层图标大小
【发布时间】:2012-08-29 06:34:18
【问题描述】:

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

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

【问题讨论】:

  • 您能否提供一个链接或展示该行为的 jsfiddle?

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


【解决方案1】:
  1. 创建两个不同的标记图像,一个默认的,一个用于悬停。 (文档: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) 不会将您的图像拉伸到新大小,而只会更改图像的剪裁。

【讨论】:

  • 这正是我最终要做的。我只是来这里写这个答案。感谢您的帮助。
【解决方案2】:

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

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

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

【讨论】:

  • 是的,这正是我最终所做的。感谢您的反馈。
  • @gabaum10 你能分享你的代码吗,你是如何重新缩放标记图像的?
猜你喜欢
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 2019-05-07
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 2012-05-08
相关资源
最近更新 更多