二三位联动

上传人:e****s 文档编号:1345211 上传时间:2017-06-08 格式:DOCX 页数:5 大小:48.04KB
返回 下载 相关 举报
二三位联动_第1页
第1页 / 共5页
二三位联动_第2页
第2页 / 共5页
二三位联动_第3页
第3页 / 共5页
二三位联动_第4页
第4页 / 共5页
二三位联动_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《二三位联动》由会员分享,可在线阅读,更多相关《二三位联动(5页珍藏版)》请在金锄头文库上搜索。

1、分享一下二三维联动的心得 复制链接 电梯直达 楼主 发表于 2014-1-10 11:18:06 | 只看该作者 |倒序浏览 |阅读模式 分享下二三维联动的心得:二三维联动容易遇到二维动三维跟着动,然后二维又响应三维动的事件,形成死循环。今天我也做了个跟 Silverlight 二维图的联动,想了个解决方法,并证明可行。方法就是:判断鼠标的所属,当二维向三维传递动的响应后,先别急着动,先去判断下鼠标在二维图上还是三维图上,判断如果在三维图上,那根本用不到,因为我们都是鼠标自己控制动的。阻止这个事件。在二维上就动。同样,为了保险也在二维图的动不动函数里添加判断。本帖子中包含更多资源您需要 登录

2、才可以下载或查看,没有帐号?开通 x terrait terrait 当前离线 积分1999主题18帖子199积分管理员积分199发消息 收藏 0 回复 举报 沙发 发表于 2014-1-14 09:22:12 | 只看该作者 本帖最后由 wushuang 于 2014-1-14 09:23 编辑 求交流。我研究了二三维联动,就是老出问题。请问你实现了是吧wushuang wushuang 当前离线 积分1020主题25帖子102积分注册会员注册会员, 积分 102, 距离下一级还需 98 积分积分102发消息回复 支持 反对 举报 板凳 发表于 2014-1-15 09:15:08 | 只看

3、该作者 wushuang 发表于 2014-1-14 09:22求交流。我研究了二三维联动,就是老出问题。请问你实现了是吧二三维联动,三维展现是基于 skyline 的,我不知道你的二维展现是基于哪个软件的,是 arcgis engine、arcgis for silverlight还是基于超图的,一般都可以相互嵌入开发的skyline 大叔 skyline 大叔 当前离线 积分5180主题3帖子518积分高级会员积分518发消息回复 支持 反对 举报 地板 发表于 2014-1-16 09:10:27 | 只看该作者 skyline 大叔 发表于 2014-1-15 09:15二三维联动,三

4、维展现是基于 skyline 的,我不知道你的二维展现是基于哪个软件的,是 arcgis engine、arcgis .我的是基于 arcgis engine 的wushuang wushuang 当前离线 积分1020主题25帖子102积分注册会员积分102发消息回复 支持 反对 举报 5# 发表于 2014-1-16 09:25:04 | 只看该作者 wushuang 发表于 2014-1-16 09:10我的是基于 arcgis engine 的那就在一个 form 里面拖放 map 控件和 skyline 三维显示控件,然后相互设置中心点坐标,视点就可以了啊skyline 大叔 sky

5、line 大叔 当前离线 积分5180主题3帖子518积分高级会员积分518发消息回复 支持 反对 举报 6# 发表于 2014-1-16 11:23:37 | 只看该作者 楼主, 能贴一点具体事项的代码么?感谢!shenhubj shenhubj 当前离线 积分110主题1帖子11积分新手上路积分11发消息回复 支持 反对 举报 海洪 海洪 当前离线 积分5080主题2帖子508积分高级会员积分508发消息7# 发表于 2014-1-17 11:26:55 | 只看该作者 全部的代码恐怕不能分享了,不过部分片段和思路可以给大家:三维 skyline 部分:加载时候绑定 OnFrame代码:v

6、ar 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;/上面说的 flagvar center_position = SGWorld.Window.CenterPixelToWorld(0);var height = SGWorld.Navigate.GetPosition().Altitude;var level

7、 = CheckHeightLevel(height);/缩放等级计算函数mp.centerAndZoom(new BMap.Point(center_position.Position.X, center_position.Position.Y), level); 缩放等级计算函数:目前二维地图的缩放等级和高度不太一样,要自己去写算法。最好弄得就是二维有四角定位的 api,那就方便了,直接获得 skyline 的中心点和高度,然后用 SGWorld.CoordServices.MoveCoord 向左上方移动,根据高度算 x,y 的移动距离,具体我就不说了,涉及到内部算法问题。左上角右下角获

8、得之后就直接定位二维地图就行了。只能定 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 的二维地图做联动的时候要慎重。百度的二连三效果还是非常不错的,不过就是百度地图有加偏,哎回复 支持 反对 举报 8# 发表于 2014-1-17 11:33:45 | 只看该作者 至于二维转三维就简单了,一般的二维地图 api 里都能获得四角坐标,根据四角坐标获得中心点,高度用同一个维度或者经度的 2 个坐标点求个距离,用这个作为高度就行,这是公式推导出来的,偏差不大,具体思路我就不公布了。就这么多,肯定好使,我测试过了。海洪 海洪 当前离线 积分5080主题2帖子508积分高级会员积分508发消息

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 销售管理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号