2

[编辑 2014 年 4 月 2 日]

我想强调一点。我的场景没有驱动它触发事件侦听器的用户事件。我知道 Maps API 文档显示了如何featureIdMapsEngineMouseEvent. 但是我的场景需要以featureId编程方式获取该功能。

我也尝试过以编程方式“伪造”点击,但这也不起作用。(好像无法实例化事件对象??)

我的预感是,解决这个问题的方法要么 1) 不存在,2) 看似简单,要么 3) 只有在最低 8 级法师通过自然 20 智慧检定时才会被发现。


[原始问题陈述]

在自定义的 Google Maps 客户端中,我有几个场景需要遍历 a 中的功能DynamicMapsEngineLayer并修改它们的样式特征。DynamicMapsEngineLayer 通过表演的作品..

.. 客户端渲染矢量数据,允许开发人员动态地重新设置矢量图层的样式以响应悬停和单击等用户交互。

Maps API 文档描述了如何使用事件侦听器重新设置各个功能的样式,事件侦听器公开了featureId由 Google 服务器分配的特殊值。但是我的场景没有用户驱动的事件。例如,考虑这个假设的链接:

http://www.acme-map.com/index.php?ZoomToAndHighlightFeatureWithId=12345

FeatureWithId是我们自己的唯一 id,而不是 Google 的 special featureId,我们在运行时此时没有。

我需要将地图加载到某个要素的正上方,并通过更改其样式特征来突出显示它。它需要在地图首次加载时以编程方式执行此操作,无需任何用户交互。如果这些矢量特征真的在 DOM 中呈现,那么肯定有一种方法,不管多么神秘,可以进入地图的内部并访问这些对象?

有没有办法遍历 DynamicMapsEngineLayer 中的各个功能或在没有事件侦听器的情况下获取 featureId 属性?

4

1 回答 1

2

我可能在这里遗漏了一些东西,但是如果您已经知道功能 ID,则可以直接重新设置它的样式而无需事件。只需直接调用getFeatureStyle()并根据需要设置样式:

var style = dynamicLayer.getFeatureStyle('1234');
style.strokeColor = '#FF0000';
style.iconImage = 'url(images/myIcon.png)';

如果您不知道要素 ID,但确实有一些其他属性要查询,则可以调用Maps Engine API来获取它。

于 2014-04-02T06:10:15.883 回答