我有一个非常具体的问题,我真的不希望直接回答,但任何指导都会有所帮助 .
简单明了,我想以编程方式触发位于Leaflet Map 上的标记上的click事件,该标记由CartoDB提供支持 . 我在 Map 上有一个包含标记的图层,每个标记都有与之关联的点击事件 . 所以,基本上,我只需要找到标记并在其上触发click事件 .
对于上下文,Mapbox实际上就是这样做的,但不幸的是我不能将Mapbox用于这个特定的实现:https://www.mapbox.com/mapbox.js/example/v1.0.0/open-popup-externally/
我愿意接受建议,但最好是,我想做一些与上面链接中的代码类似的东西 - 通过javascript查询Leaflet或CartoDB,通过自定义属性/ lat-lng / ??查找和访问标记 . . 我认为从那里开始会很简单 .
另一种方法是在创建标记时挂钩事件,将它们存储在哈希中,然后在需要进行手动点击时访问该存储 . 但是,我不知道存在任何此类事件,我找不到列出支持事件的文档 .
由于我不是自己创建标记,并且不能(出于原因),因此我将它们添加到 Map 时存储它们不是一个选项 .
我假设,因为Mapbox正在这样做,必须有一些钩子,但我找不到任何有 Value 的文件来指出我正确的方向 .
有什么建议或指示?
1 回答
对于任何偶然发现这一点的人,我已经为我的具体案例找到了可行的解决方案 . 这个电话会为你做:
从本质上讲,您需要抓取相关图层并触发点击,并传递相应的数据:
event:这可以为null,因为没有事件
latlng:纬度/经度位置
data:像
{ cartodb_id: 123 }
这样的对象 . cartodb_id是必需的 .layer_count:图层的索引(可能为0)
要在这里获取latlng和cartodb_id,你可能需要做我做的事 - 查询它:
然后,您可以调用open_marker,传递要打开标记的图层和对象标识符 . 只要在您的cartodb数据库中,您就可以 grab 它 . 当然,可以调整查询以适合您的方式 .
对于我的特定实现,我必须使用setTimeout调用来获得正确的控制流,因为我在页面加载时调用 . 但如果你在页面加载后调用,应该没问题 .
因此,在给定本地标识符的情况下打开标记的简单方法 . 希望这有助于其他人!
感谢此解决方案的灵感来自:https://gist.github.com/javisantana/7b817fda1e7511c451c7#file-index-html-L39