maptalks / maptalks.markercluster

A layer of maptalks to cluster markers.
MIT License
49 stars 18 forks source link

聚合插件不能正常使用 #16

Closed gee1k closed 5 years ago

gee1k commented 6 years ago

我在地图初始化完成之后创建了一个Cluster图层,并添加到map上,然后在请求到数据之后添加到Cluster图层中之后,只有第一次能正常显示,当我进行缩放之后,聚合图层就会不显示了,只有在缩放过程中会显示,缩放完成就没了。并且会报错,见下图:

http://p7wghdplg.bkt.clouddn.com/code1.png http://p7wghdplg.bkt.clouddn.com/code2.png http://p7wghdplg.bkt.clouddn.com/error.png http://p7wghdplg.bkt.clouddn.com/error2.png

gee1k commented 6 years ago

最可怕的是单独写一个页面不使用npm模式来测试,又没有问题

gee1k commented 6 years ago

上面方法中的feature为undefined

gee1k commented 6 years ago

使用 VectorLayer、HeatLayer、Animate 都没问题,只有ClusterLayer不能正常使用

gee1k commented 6 years ago

或者说是不是 ClusterLayer 插件只支持 Vanilla Javascript ,不支持 ES6?

fuzhenn commented 6 years ago

ClusterLayer插件应该能支持ES6的,也有其他人用了vue + clusterlayer,他们那边都是正常的。

截图里的代码并不是maptalks里的代码,是什么库注入的吗? image

不能直接重现有点麻烦,你手头有没有现成的重现工程吗?

gee1k commented 6 years ago

的确。我使用创建一个新的vue项目,使用 clusterlayer 没发现有问题,可能问题还是出现在我的项目中。上面那个错误是maptalks.js中createFunction函数里报错的。第643行

fuzhenn commented 6 years ago

感觉是某个地图逻辑问题造成的,我晚点也过一下代码,看看可能是哪里的问题 你要是能重现出来,随时把代码发给我

gee1k commented 6 years ago

不知道webpack或者vue等模块的版本是否对其有影响,我用vue-cli 搭建一个新的项目,是没问题的。但是把我自己的项目拷贝一份,把里面的东西删光了,然后一样的代码放进去就不行

gee1k commented 6 years ago

我把两个项目的源码都发到你邮箱了

gee1k commented 6 years ago

不知道是什么原因导致当clusterLayer添加到地图上时,上面截图里面的feature为undefined。现在我在里面对feature做了判断暂时解决了这个问题,但这不是长久之计

image

fuzhenn commented 6 years ago

谢谢,代码已经收到,晚点我看一下

szoyaung commented 5 years ago

@fuzhenn 我也遇到同样的问题了,我是项目重新拉下来,然后就出现这个问题,之前是好的。

fuzhenn commented 5 years ago

ok,我晚点会看一下这个问题

fuzhenn commented 5 years ago

fixed by https://github.com/maptalks/maptalks.js/commit/b935f5cb22ad8b19ac4e6a30f66f9efa4b90eeae

看上去是vue.js里 reactive 对象时,对属性的遍历与maptalks中function-type的逻辑冲突导致的

fuzhenn commented 5 years ago

不好意思,这个问题拖了这么久,向各位抱歉下,不过上面的解决方案是没错的