精华内容
下载资源
问答
  •  首先我们要做的是一个带有LBS定位服务(比如高德地图、百度地图等)AR功能,在这个场景中,会有一些地图上的”点“(如派出所、学校)是我们需要显示在我们的AR镜头上的,如下图: 图片摘自wuyt2008的博客:...

    这篇文章的应用场景是这样子的:

      首先我们要做的是一个带有LBS定位服务(比如高德地图、百度地图等)AR功能,在这个场景中,会有一些地图上的”点“(如派出所、学校)是我们需要显示在我们的AR镜头上的,如下图:

    图片摘自wuyt2008的博客:《unity3d 尝试 基于地理定位的 增强现实

      本文要解决的问题就是,如何判断这些Point的东南西北,即坐标。

        博主采用的开发环境是

    1. Unity3D: 5.3.5;
    2. EazyAR: SKD v1.3.0;
    3. GyroDroid :这个Unity3D 的传感器插件包上网搜一下就有了。

        要应用本博客的内容之前,必须先看过wuyt2008的博客《unity3d 尝试 基于地理定位的 增强现实》。

        开坑:

      实际上我们要实现功能的原理就是根据定位返回的自身(Location)坐标(XL,ZL),跟我们需要标注显示出来的Marker的坐标(XM,ZM)进行坐标系的运算,很简单,

    X=XL-XM

    Z=ZL-ZM

      然后我们再把我们的主摄像机的Position的x、z轴(Y是控制高的,与物体平面定位没有关系)设置为(0,0),这样呢,Marker在Unity中得坐标,就是(X,Z),并且经过我的测试,Unity中在使用ARCamera的情况下,+X轴指的方向是东90°,+Z轴指的方向是北90°。我们根本不需要做任何其他判断,只需要根据这个特性,再根据经纬度的数据特性,如果X的值为负,则表示Marker位于东边(相对自身),如果Z的值为负,则表示Marker位于北边(相对自身),所以只需要按照(-X,-Z)设置Marker的(X,Z)坐标,即可准确的安放Marker的位置。

      首先,我们使用EazyAR SDK 中提供的AR摄像机,为什么说它是AR摄像机呢,因为它本身已经根据AR应用的特性,进行了一些优化,还有添加了一些C# Script,所以直接拿来用,你会发现比你自己写一大堆乱七八糟的代码好多了。然后呢,再将GyroDroid插件包中的“MinimalSensorCamera”脚本,绑定到摄像机上,让AR摄像机镜头随着手机的旋转而旋转。

      然后就是最重要的一个环节,这里要结合wuyt2008博主的博客中得代码来介绍,我把代码贴一下,并且我自己加了一些注释,助于观看:

     1 using UnityEngine;
     2 using System.Collections;
     3 using System.Collections.Generic;
     4 using UnityEngine.UI;
     5 
     6 public class ARMange : MonoBehaviour {
     7 
     8     public List<PlaceInfo> places = new List<PlaceInfo>();//Marker的集合(Marker是什么,请学习一下高德地图api的应用,简单的说,就是你想要标记在地图上的点,比如一些餐厅或景点之类,甚至可以是自定义的点)
     9     public GameObject perfab;
    10     public PlaceInfo location = new PlaceInfo ();//根据高德API定位后传递过来的自身坐标信息
    11 
    12     public void ShowPlaces(){
    13         ClearPlace ();
    14 
    15         for (int i = 0; i < places.Count; i++) {
    16 
    17             GameObject newPlace = Instantiate<GameObject> (perfab);
    18             newPlace.transform.parent = this.transform;
    19 
    20             double posZ = places [i].Latitude - location.Latitude;//计算相对距离,z轴(Unity中的坐标系)
    21             double posX = places [i].Longitude - location.Longitude;//计算相对距离,x轴(Unity中的坐标系)
    22 
    23             float z = 0;
    24             float x = 0;
    25             float y = 0;
    26 
    27             if (posZ > 0) {
    28                 z = 500f;
    29             } else {
    30                 z = -500f;
    31             }
    32 
    33             if (posX > 0) {
    34                 x = 500f;
    35             } else {
    36                 x = -500f;
    37             }
    38 
    39             z = z + (float)(posZ * 1000);
    40             x = x + (float)(posX * 1000);
    41             y = y + i * 20;
    42 
    43             newPlace.transform.position = new Vector3 (x, y, z);//设置Marker
    44             newPlace.transform.LookAt (this.transform);
    45             newPlace.transform.Rotate (new Vector3 (0f, 180f, 0f));
    46 
    47             newPlace.gameObject.GetComponentInChildren<Text> ().text = places [i].Name;
    48         }
    49     }
    50 
    51     private void ClearPlace(){
    52         GameObject[] oldPlaces = GameObject.FindGameObjectsWithTag ("Place");
    53         for (int i = 0; i < oldPlaces.Length; i++) {
    54             Destroy (oldPlaces [i].gameObject);
    55         }
    56     }
    57 }

      然后我们把Unity3D中,ARCamera(AR摄像机)的Position,设置为(0,0,0)这么做呢,是方便等会儿设定Marker的坐标,只有相机坐标设置为这样子,X和Z的值才是Marker的直接坐标,否则还得进行一些运算。不过这里值得注意的是,坐标系的设定,应该在CameraDevice对象上,否则是无效的。

      然后我们修改上述的代码,修改起来,并不会太难,只需要修改第43行,改成:

    20 double posZ = places [i].Latitude - location.Latitude;//计算相对距离,z轴(Unity中的坐标系)
    21 double posX = places [i].Longitude - location.Longitude;//计算相对距离,x轴(Unity中的坐标系)
    43 newPlace.transform.position = new Vector3 (-x, y, -z);//设置Marker

      这样就完事儿了。。。wuyt2008的博客《unity3d 尝试 基于地理定位的 增强现实》最后所提及的偏移问题,貌似没有这种情况,可能是跟EazyAR提供的ARCamera有关,以及镜头自动会有东南西北的方向感。最后感谢wuyt2008,最近在做AR的项目CityHunter,一直在研究如何将高德定位整合进Unity3D来,虽然应用方面与其所描述的不太相干(实际上我要运用的是高德API的电子围栏的功能),但是在操作中可举一反三,果断是学习到了。

    转载于:https://www.cnblogs.com/wuxinzhe/p/5700553.html

    展开全文
  • 因项目需要在echarts+百度地图在背景图画水管图,根据一个接水点和它的东南西北四个接水点点实时的连接情况连接成网管图。刚开始想的比较复杂,找的是关系图,后来参考了大神的代码选择了比较简单的线图。 获取...

           因项目需要在echarts+百度地图在背景图上画水管图,根据一个接水点和它的东南西北四个接水点点实时的连接情况连接成网管图。刚开始想的比较复杂,找的是关系图,后来参考了大神的代码选择了比较简单的线图。

     

    获取所有管道点的代码:

    var geoCoordMap = new Map();//点数据集合
    for(var i in pointData ) {
      
    geoCoordMap.set(pointData[i].id.toString(), [parseFloat(pointData[i].vcLongitude), parseFloat(pointData[i].vcDimension)])
    }

    for(let i=0 ;i<pointData.length;i++){
       
    var fromL =pointData[i].id.toString() ;
       
    if (pointData[i].itopID !='0'){
           
    var toTop=pointData[i].itopID.toString();
           
    this.jieShuiDian.push({
               
    coords:[geoCoordMap.get(fromL), geoCoordMap.get(toTop)]
            })
        };
       
    if(pointData[i].ileftID!='0'){
           
    var toLeft=pointData[i].ileftID.toString();
           
    this.jieShuiDian.push({
               
    coords:[geoCoordMap.get(fromL), geoCoordMap.get(toLeft)]
            })
        };
       
    if(pointData[i].irightid!=0){
           
    var toRight=pointData[i].irightid.toString();
           
    this.jieShuiDian.push({
               
    coords:[geoCoordMap.get(fromL), geoCoordMap.get(toRight)]
            })
        };
       
    if(pointData[i].ibottomid!=0){
           
    var toBottom=pointData[i].ibottomid.toString();
           
    this.jieShuiDian.push({
                
    coords:[geoCoordMap.get(fromL), geoCoordMap.get(toBottom)]
            })
        }

     

    效果图:

     

    总结:多思考多总结。

    展开全文
  • 推荐过好用地图导航app给她,即便功能多强大,对她来说,都一样:一张大地图上分不清上下左右东南西北。即便是地图中定位点标明了当前方向,她也不会去理会。仅仅会说:看不懂!这便是非...

    关于半岛铁盒的寻找,周董也是须要在“最后的一公里”问店里的小妹妹,才干真正找到那锈迹斑斑的半岛铁盒。而在O2O火爆的今天,谁才是我们身边那个能够咨询的前台小妹妹呢?

    相信大家身边都有路痴,女友就是典型的一个。推荐过好用的地图导航app给她,即便功能多强大,对她来说,都一样:一张大地图上分不清上下左右东南西北。即便是地图中的定位点标明了当前的方向,她也不会去理会。仅仅会说:看不懂!这便是非常明显的用户思维。我仅仅是个用户,无论你功能多强大,还是一教就会使用,但是对不起,你带不给我新鲜,我连基本操作都不想去学。在你跟我说定位点的箭头朝向就是我双眼前视的方向.......前,我就把你卸载了!记住,是”前“,就是说连时间都不给你。所以在移动应用泛滥的今天,第一时间把握住留存率是重中之重。用户与app的关系就像是相亲。用好的第一印象把人留下,再好好地培养感情,把自己好的一面给他看。app与人,全然符合两个个体交往的全部特性。仅仅是如今这时候,主动权全然是在用户手里。而app仅仅能是被交往。

    相亲是第一步。相信谁都不会拒绝长相气质涵养并存的交往对象。那么app的界面及交互方式就是交往过程中的脸面。非常多人都会说,做人不能光看长相。可有人敢说,长得不好看的人的品质一定高过长得好看的人?谁敢?

    事实上外表并不仅仅是五官因素,还包含总体气质。内在涵养往往是举手投足间就能够feel到的。所以一款app,即便你做不到界面美工极致,至少要整洁,要符合自身的定位,要让用户认为非常舒服。若化妆技术不够,仅仅能是西施效颦;若媚是自身的涵养,自然“回眸一笑百媚生,六宫粉黛无颜色”

    如今我们能够这样说,界面美工设计时一个人的外貌,交互就是其谈吐,其背后的功能技术便是其内才。可想而知,相貌平凡者,能够接受;但是谈吐不行,闷骚平凡型的交流方式就是一个过不去的坎。

    相对于传统的人社会人际关系来说,个体成员关系链结构相对稳定,人际关系圈子化,使得人与人的交流能够有一段非常长的时间来”日久见人心“!但是对于现代”快消“时代,这是万万不被接受的。如当今的非常多”快消产品“(相亲网,征婚节目),更加是这个快消时代的详细实例。人家但是没有时间来慢慢探究你的好,由于信息时代的信息公开开放使得选择非常多,多到眼花缭乱。这正如现今的移动应用等市场,产品那么多,凭什么选你,选了又凭什么要一直用你?短时间用你谁说不能再另选其它?

    所以在app与用户交往的前期,外貌(界面)与谈吐(交互)两者才占有很多其它的权重。这能使你在海量的app应用中第一时间吸引到用户的眼球。

    用户体验确实是门大学问。好的交互体验,是用户在不知道怎么使用你这款产品的时候,你的app能依据人的正常简单性的思维去传递给用户使用的信息。有句话说得好“在设计产品时,要把用户当成傻子!”这不是在怀疑用户的智商,而是说这样才是产品存在的意义:带给用户便利,降低用户耗能。除了信息上的获取,还要让用户以最少的使用成本去获得最大化的价值信息。试想,假设用户须要用极大的时间精力去理解、使用你的产品,那为何要使用你的产品?

    说到头,说回半岛铁盒的寻找过程。在为路痴发愁的时候,发现了“随便走”。其导航引路方式不再是依靠地图,而是使用所见即所得的直观表达,直接在手机相机的预览界面中标出相应地点的名称及距离,像极了Google Glass!对于“最后一公里”的导航,给了人一种最直观的呈现。女友看后确实非常兴奋,尽管不能保证在以后的使用中一定能成功将路痴导航到准确位置,可是其交互确实是一个优秀的模范!

    交互,说究竟,便是用户用最少的成本去与产品交流。而假设这个过程用户能获得情感方面的愉悦甚至是兴奋,那么,其交互价值就不再是一个沟通工具,而是一种像恋人般的一种甜言蜜语!

    交互无处不在,随着人机交互的发展,全部一切都不再是冷冰冰,siri、“小冰”将更懂你的心!!!





    转载于:https://www.cnblogs.com/mengfanrong/p/4060568.html

    展开全文
  • 面对室内寻路、探店难题,百度地图日前创新地推出了"AI室内通"功能,让一进商场就"不分东南西北"人们,不再因室内环境复杂而影响出行。此前,室内导航一直是导航场景一大难题,受限于卫星信号在室内衰减,信号...

    动辄十几万平米的大型购物中心,一不小心就走错方向;明明导航到了终点却看不到店铺,才发现自己走错了楼层。各大商圈、商场里错综复杂的室内环境,常常让"路痴星人"在找寻一家门店时走上很多弯路。面对室内的寻路、探店难题,百度地图日前创新地推出了"AI室内通"功能,让一进商场就"不分东南西北"的人们,不再因室内环境复杂而影响出行。

    此前,室内导航一直是导航场景的一大难题,受限于卫星信号在室内衰减,信号的强度和稳定性不高,且不能定位到不同的楼层,传统导航无法规划正确的路线和发起导航;百度地图联合百度大脑DuMix AR率先实现基于视觉定位的室内导航功能,该功能通过百度大脑DuMix AR研发的视觉定位与增强现实服务 VPAS(visual positioning and augmenting service)为用户提供基于手机图像的高精度6DoF定位能力。VPAS技术通过基于图像的大尺度SFM技术构建商场的高精几何地图,然后利用场景理解算法、3D视觉定位算法实时计算用户的准确位置,在实际复杂环境的实测定位精度可达1米。用户仅需进入AR实景导航,抬起手机扫描周围实景即可快速获得自己的精准定位,跟着稳定、流畅的导航到达目的地。

    d6faad82d912f26ac90fd80bbd2d4769.pngf63fddce8698c6e17b1a43cb1cb180ed.gif

    据了解,这一功能已率先在北京华润五彩城上线。用户在该商场内用百度地图步行导航时,只需点击页面下方的"实景导航"按钮,再用手机扫描周围环境,百度地图即可识别出用户当前所在楼层及准确位置,接着规划一条合理的室内路线,避免因为走错楼层、区域或方向,而多走"冤枉路"。在跟着导航前进的过程中,导航界面会在真实场景中显示箭头、前进方向等实景图标,帮用户便捷的找到目的地。

    13a648840cd79558474d0a5788f26a3f.gif745c52061e2e71d7d5e0ca88da1f7d85.gif

    早在2019百度AI开发者大会上,百度大脑DuMix AR的VPAS技术能力便已成功落地百度地图,在圆明园大水法遗址上将宏伟建筑的原貌实景还原,让每一个走进圆明园景区的游客都能体会到AR科技带来的震撼。此后,百度地图又与泰山景区合作,基于VPAS技术落地了国内首个"AR智能导览",让用户在线上也能深度畅游五岳之巅。此次将该技术应用于室内导航,切实解决了人们在环境复杂、信号不稳的室内场景下找路难的困扰,是将前沿技术与生活场景的进一步结合,让用户的出行更加简单便捷。据悉,"AI室内通"功能未来还将覆盖更多商超、车站和博物馆等室内场景,解决室内出行的"最后一公里"难题。此外,百度地图近期还将进一步优化室内步行AR导航中的AR引导路线、AR前进方向的虚实融合效果体验,并支持在导航过程中的AR商品互动或AR游戏互动,让室内导航更有趣。(一鸣)

    展开全文
  • 我们有一辆小汽车,可以在一个拥有xy坐标的地图上按照东南西北方向任意行驶,你可以设定小车行驶方向和距离,小车会向你汇报它坐标位置。 其实学习类应该和我们学习其它事物一样,从学习使用开始,然后再学习...
  • 我们有一辆小汽车,可以在一个拥有xy坐标的地图上按照东南西北方向任意行驶,你可以设定小车行驶方向和距离,小车会向你汇报它坐标位置。 其实学习类应该和我们学习其它事物一样,从学习使用开始,然后再学习...
  • 用ArcIMShtml View做过项目人都有个相当痛苦经历。整天在一顿javascript 和... 单位有个项目,要求用VML在地图上动态绘制点东西。每次看到连续定义50个以上变量代码我就容易发疯。所以还没看完第一个方法
  • 第一单元位置与方向一认识东南西北与东北东南西北西南八个方向1确定方向或约定方向方法早上太阳升起方向是东方傍晚太阳落下地方是西方指南针所指方向是北方北斗星所指方向是北方一般情况下地图或图纸
  • 千岛湖岛屿问题 C++

    2020-02-23 21:06:52
    千岛湖问题 ...现在小红手里有一张 n×n 的千岛湖地图,地图上「*」表示陆地,「.」表示水域,两块陆地相连当且仅当一块陆地在另一块陆地的东南西北(上下左右)四个方向的相邻格子上。小红想知...
  • 在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 家族

    2018-01-27 15:55:00
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • jzoj家族【DFS】

    2019-07-09 19:58:59
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • [luogu1767]家族

    2018-09-04 20:07:00
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 【DFS】家族

    2019-07-09 14:55:29
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 家族——jzoj 1985

    2018-01-26 20:23:04
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 曼哈顿距离与欧氏距离

    千次阅读 2017-07-15 16:31:50
    定义 ...简称为:两个点在标准坐标系上的绝对轴距总和。也就是说曼哈顿距离指的就是从一个点沿着东南西北(即沿着横轴纵轴)移动到另一个点的最短路径长度。 如图,这是从点A到点B的两条曼哈顿距离:
  • 1985. 家族

    2019-07-09 21:39:35
    在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...
  • 搜索练习3

    2017-11-19 17:55:00
     在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求...
  • 在一个与世隔绝岛屿,有一个有趣现象:同一个家族人家总是相邻(这里相邻是指东南西北四个方向),不同家族之间总会有河流或是山丘隔绝,但同一个家族人不一定有相同姓氏。现在给你岛上的地图,求出...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

地图上的东南西北