收藏 分销(赏)

二三位联动.docx

上传人:pc****0 文档编号:7442411 上传时间:2025-01-04 格式:DOCX 页数:5 大小:48.04KB 下载积分:10 金币
下载 相关 举报
二三位联动.docx_第1页
第1页 / 共5页
二三位联动.docx_第2页
第2页 / 共5页


点击查看更多>>
资源描述
分享一下二三维联动的心得 [复制链接] terrait terrait 当前离线 积分 199 9 主题 18 帖子 199 积分 管理员 积分 199 发消息 电梯直达 楼主 发表于 2014-1-10 11:18:06 | 只看该作者 |倒序浏览 |阅读模式 分享下二三维联动的心得:二三维联动容易遇到二维动三维跟着动,然后二维又响应三维动的事件,形成死循环。今天我也做了个跟Silverlight二维图的联动,想了个解决方法,并证明可行。 方法就是:判断鼠标的所属,当二维向三维传递动的响应后,先别急着动,先去判断下鼠标在二维图上还是三维图上,判断如果在三维图上,那根本用不到,因为我们都是鼠标自己控制动的。阻止这个事件。在二维上就动。同样,为了保险也在二维图的动不动函数里添加判断。 本帖子中包含更多资源 您需要 登录 才可以下载或查看,没有帐号?开通 x 收藏0 回复 举报 wushuang wushuang 当前离线 积分 102 0 主题 25 帖子 102 积分 注册会员 注册会员, 积分 102, 距离下一级还需 98 积分 积分 102 发消息 沙发 发表于 2014-1-14 09:22:12 | 只看该作者 本帖最后由 wushuang 于 2014-1-14 09:23 编辑 求交流。我研究了二三维联动,就是老出问题。请问你实现了是吧 回复 支持 反对 举报 skyline大叔 skyline大叔 当前离线 积分 518 0 主题 3 帖子 518 积分 高级会员 积分 518 发消息 板凳 发表于 2014-1-15 09:15:08 | 只看该作者 wushuang 发表于 2014-1-14 09:22 求交流。我研究了二三维联动,就是老出问题。请问你实现了是吧 二三维联动,三维展现是基于skyline的,我不知道你的二维展现是基于哪个软件的,是arcgis engine、arcgis for silverlight还是基于超图的,一般都可以相互嵌入开发的 回复 支持 反对 举报 wushuang wushuang 当前离线 积分 102 0 主题 25 帖子 102 积分 注册会员 积分 102 发消息 地板 发表于 2014-1-16 09:10:27 | 只看该作者 skyline大叔 发表于 2014-1-15 09:15 二三维联动,三维展现是基于skyline的,我不知道你的二维展现是基于哪个软件的,是arcgis engine、arcgis ... 我的是基于arcgis engine的 回复 支持 反对 举报 skyline大叔 skyline大叔 当前离线 积分 518 0 主题 3 帖子 518 积分 高级会员 积分 518 发消息 5# 发表于 2014-1-16 09:25:04 | 只看该作者 wushuang 发表于 2014-1-16 09:10 我的是基于arcgis engine的 那就在一个form里面拖放map控件和skyline三维显示控件,然后相互设置中心点坐标,视点就可以了啊 回复 支持 反对 举报 shenhubj shenhubj 当前离线 积分 11 0 主题 1 帖子 11 积分 新手上路 积分 11 发消息 6# 发表于 2014-1-16 11:23:37 | 只看该作者 楼主,能贴一点具体事项的代码么?感谢! 回复 支持 反对 举报 海洪 海洪 当前离线 积分 508 0 主题 2 帖子 508 积分 高级会员 积分 508 发消息 7# 发表于 2014-1-17 11:26:55 | 只看该作者 全部的代码恐怕不能分享了,不过部分片段和思路可以给大家: 三维skyline部分:加载时候绑定OnFrame 代码: var minfo = SGWorld.Window.GetMouseInfo();     if (minfo.X <= 0 || minfo.Y <= 0) return;     var pos = SGWorld.Window.PixelToWorld(minfo.X, minfo.Y, -1);     if (pos == null||flag2d) return;//上面说的flag     var center_position = SGWorld.Window.CenterPixelToWorld(0);     var height = SGWorld.Navigate.GetPosition().Altitude;     var level = CheckHeightLevel(height);//缩放等级计算函数     mp.centerAndZoom(new BMap.Point(center_position.Position.X, center_position.Position.Y),  level); 缩放等级计算函数:目前二维地图的缩放等级和高度不太一样,要自己去写算法。 最好弄得就是二维有四角定位的api,那就方便了,直接获得skyline的中心点和高度,然后用SGWorld.CoordServices.MoveCoord向左上方移动,根据高度算x,y的移动距离,具体我就不说了,涉及到内部算法问题。左上角右下角获得之后就直接定位二维地图就行了。 只能定cneter和level的,就要把三维中的height转为二维里的level,{"50m","100m","200m","500m","1km","2km","5km","10km","20km","25km","50km","100km","200km","500km","1000km","2000km"}  这个是百度api的3-18级的level,转换下就行了。不过还是不理想。因为缩放级别会跳,从一个跳到另一个的时候很突兀。所以没有四角定位api的二维地图做联动的时候要慎重。 百度的二连三效果还是非常不错的,不过就是百度地图有加偏,哎 回复 支持 反对 举报 海洪 海洪 当前离线 积分 508 0 主题 2 帖子 508 积分 高级会员 积分 508 发消息 8# 发表于 2014-1-17 11:33:45 | 只看该作者 至于二维转三维就简单了,一般的二维地图api里都能获得四角坐标,根据四角坐标获得中心点,高度用同一个维度或者经度的2个坐标点求个距离,用这个作为高度就行,这是公式推导出来的,偏差不大,具体思路我就不公布了。就这么多,肯定好使,我测试过了。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服