自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

查看: 874|回复: 4
打印 上一主题 下一主题

[已解决]切换楼层后拖动自定义marker错误

[复制链接]
最佳答案
1 

14

主题

29

帖子

118

积分

新手上路

Rank: 1

积分
118
跳转到指定楼层
楼主
发表于 2016-6-14 10:35:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Theseven77 于 2016-6-14 10:40 编辑

切换楼层后拖动marker,部分代码
  1.      markers[dataId]=marker;
  2.      marker.addEventListener("dragend",getlocation2(dataId));
  3.                                        
  4.      function getlocation2(dataId){
  5.            datalocation = markers[dataId].getLatLng();
  6.            saveJsonData(buildName,buildId,floorNum,dataId,datalocation,myIcon,dataName,deviceName);}
复制代码

在控制台出现错误
这到底是个什么错误呢?

另外,之前有朋友回复的:
  1. 获取拖动后的marker 的坐标可以这样:
  2. marker.addEventListener("dragend",getlocation2);
  3. function getlocation2(e){
  4.     var datalocation = e.target.getLatLng();
  5.     saveJsonData(buildName,buildId,floorNum,dataId,datalocation,myIcon,dataName,deviceName);
  6. }
复制代码
这个只能保存最后添加的那个marker的坐标,不管拖动哪个marker,都只保存最后的那个
回复

使用道具 举报

最佳答案
14 

0

主题

17

帖子

94

积分

新手上路

Rank: 1

积分
94
推荐
发表于 2016-6-14 12:04:40 | 只看该作者    本楼为最佳答案   
拖动事件 marker.addEventListener("dragend",getlocation2) 这里不能带其他参数,可以理解这里就是个回调;
function getlocation2(e){
    var datalocation = e.target.getLatLng();
}
e.target 可以获取当前拖动的marker,你要获取所有的marker的话存一个全局变量的数组,循环就可以得到,另外你可以把自己的数据下标保存到 marker.options,比如 marker.options.dataId = 11; 你要获取marker对应的下标就直接marker.options.dataId 就可以获取
回复 支持 1 反对 0

使用道具 举报

最佳答案
14 

0

主题

17

帖子

94

积分

新手上路

Rank: 1

积分
94
沙发
发表于 2016-6-14 11:11:34 | 只看该作者
本帖最后由 百世经纶 梵天 于 2016-6-14 11:14 编辑

不明白你要表达的意思或需求。出错的原因上次意境回复了过了。
回复 支持 反对

使用道具 举报

最佳答案
1 

14

主题

29

帖子

118

积分

新手上路

Rank: 1

积分
118
板凳
 楼主| 发表于 2016-6-14 11:40:09 | 只看该作者
百世经纶 梵天 发表于 2016-6-14 11:11
不明白你要表达的意思或需求。出错的原因上次意境回复了过了。

你上次回复的内容我试了,但是按照那个来做的话只能改变最后一个marker的坐标,即使我拖动别的marker,也只是改变最后一个marker的坐标。
简单点说,scada里有多个已经存放好的marker,当我进入室内地图的时候,做循环,把scada里的marker显示在地图上,暂时存在markers[]里,markers的下标就是dataId,并且给每个marker绑定拖动事件,当我拖动的时候markers[dataId]就是具体的marker对象了么,执行 datalocation = markers[dataId].getLatLng();  获取到这个marker的新坐标,然后就会出现这个错误,但是我现在不知道为什么会出现这个错误,所以也不知道怎么解决掉。。。
回复 支持 反对

使用道具 举报

最佳答案
1 

14

主题

29

帖子

118

积分

新手上路

Rank: 1

积分
118
地板
 楼主| 发表于 2016-6-14 11:44:23 | 只看该作者
本帖最后由 Theseven77 于 2016-6-14 11:45 编辑
百世经纶 梵天 发表于 2016-6-14 11:11
不明白你要表达的意思或需求。出错的原因上次意境回复了过了。

难道是因为拖动事件传递参数所以报错?因为我试了下,getlocation2(dataId) 这个方法里不执行其他操作,只是console.info(dataId)也会报错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表