精华内容
下载资源
问答
  • 最近闲的没事干,发现滴滴出行的app,地图上的小汽车可以跑,很炫是不是,我们公司也是做车辆监控的app的,我就一直揣摩着怎么也让我们的小汽车在地图上跑来跑去啊,这样给人感觉好点,废话不说了,先看下滴滴出行的...

    最近闲的没事干,发现滴滴出行的app,地图上的小汽车可以跑,很炫是不是,我们公司也是做车辆监控的app的,我就一直揣摩着怎么也让我们的小汽车在地图上跑来跑去啊,这样给人感觉好点,废话不说了,先看下滴滴出行的界面; 
    这里写图片描述

    1.我们的gps数据是车辆10秒上报一次位置数据;前端请求数据获取当前最新的gps位置; 
    2.第一次请求到数据后我把所有的车辆先标记到地图上,高德地图有标记方法; 
    3.标记到地图上以后,需要把marker存放到list记录下来(为了更新移动使用); 
    4.当再次请求道新的gps数据的时候,我们需要平滑的移动到最新的位置,关键问题是再这里;怎么样在才能平滑移动呢,无非就是需要不断的移动从当前位置到最新的位置,这里就当时从A点移动到B点,无非就是marker.setPosition(),不断的调用知道B点,

    List<Marker> markersMap = new ArrayList(Marker);//存放地图上标记marker
    private void addMarkToMap(List<MarkerCarOptions> markerCarOptions){
    
                if(markersMap.size()!=0){
                //markersMap不为空,说明是更新marker
                for (Marker marker : markersMap) {
                    for (MarkerCarOptions options : markerCarOptions) {
                        if(marker.getObject().equals(options.car.getBusid())){
                            moverCar(marker, options);
                            break;
                        }
                    }
                }
    }
        /**
         * 更新地图车辆位置
         * @param markerCarOptions
         */
    private void moverCar(final Marker marker,final MarkerCarOptions options){
    
            //1,获取到起点到终点的点,默认绘制4个点,最后一个为终点
            final List<LatLng> roads = new ArrayList<LatLng>();
            LatLng startLatLng = marker.getPosition();//小车当前位置
            LatLng endLatLng = options.markerOptions.getPosition();//终点位置
    
            LatLng latLng_2 = new LatLng((startLatLng.latitude+endLatLng.latitude)/2, (startLatLng.longitude+endLatLng.longitude)/2);
            LatLng latLng_1 = new LatLng((startLatLng.latitude+latLng_2.latitude)/2, (startLatLng.longitude+latLng_2.longitude)/2);
            LatLng latLng_3 = new LatLng((latLng_2.latitude+endLatLng.latitude)/2, (latLng_2.longitude+endLatLng.longitude)/2);
    
            roads.add(latLng_1);
            roads.add(latLng_2);
            roads.add(latLng_3);
            roads.add(endLatLng);
            Thread t =new Thread(new Runnable() {
    
                @Override
                public void run() {
                    // TODO Auto-generated method stub
    
                    try {
    
                        for (int i = 0; i < roads.size(); i++) {
                            marker.setPosition(roads.get(i));
                            Thread.sleep(200);
                        }
                        marker.setIcon(options.markerOptions.getIcon());
    
                    } catch (Exception e) {
                        // TODO: handle exception
                        e.printStackTrace();
                    }
                }
            });
            t.start();
        }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    5,最后需要说明的是,大家问平均获取的中间点这样获取到底对不对,我告诉你确切的说是不准确的,但是在10秒每次上报的数据之间来这样算是没错的;具体大家可以测下下就知道了,稍后再上了例子好了

    展开全文
  • 大部分应用类APP都喜欢在主页左上角弄上个当前所在城市,那这种自动定位怎么实现的呢?下面以百度地图sdk为例,通过几句代码实现下: 1、代理: BMKGeoCodeSearchDelegate 2、声明: @property ...

    大部分应用类APP都喜欢在主页左上角弄上个当前所在城市,那这种自动定位怎么实现的呢?下面以百度地图sdk为例,通过几句代码实现下:

    1、代理:

    BMKGeoCodeSearchDelegate

    2、声明:

    @property (nonatomic, assign) CLLocationCoordinate2D coord;

    @property (nonatomic, strong) BMKGeoCodeSearch *searchAddress;

    @property (nonatomic, strong) BMKReverseGeoCodeOption *mapOption;


    3、创建并发起检索

    - (void)viewDidLoad {

    // 具体位置

        _mapOption = [[BMKReverseGeoCodeOption alloc] init];

        _mapOption.reverseGeoPoint = _coord;

        _searchAddress = [[BMKGeoCodeSearch alloc] init];

        _searchAddress.delegate = self;

       [_searchAddress reverseGeoCode:_mapOption];

    }


    4、代理方法里接收到消息,解析就可以啦

    -(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{

    }









    展开全文
  • 获取所选单元格的初始帧,并从该位置向最终展开模式设置动画,以显示详细信息视图控制器。 确保细节视图控制器的扩展看起来不错,这是您的责任。 要关闭详细信息视图控制器,将使用手势识别器,并将详细信息视图...
  • 使用React,Redux编写的Weather应用 ... 然后,表单的onSubmit操作会调用redux操作创建者,以从OpenWeather API中获取位置特定的信息并收到承诺。 成功兑现承诺后,将再次调用GOOGLE MAPS API,以获取
  • 原神的签到福利是需要单独下载APP进行才可以领取,并且每天需要打卡,虽然奖励并不是很可观,但有一些摩拉,食材和可观的经验书逐渐起来还是挺正确的。可能本身不怎么刷论坛的玩家经常会忽略这些奖励。利用Github的...
  • 楼主是一名Abaper,最近看到有小伙伴需求:客户的APP有定位功能,每当打开手机打开GPS时,就会每隔五分钟,将定位点上传到高德...但通过高德地图获取的定位点,有很多点的位置很偏,需要去掉。关于怎么去掉,猎鹰有...

     

         道格拉斯-普客算法介绍地址:https://www.jianshu.com/p/bf595477a124
         楼主是一名Abaper,最近看到有小伙伴需求:客户的APP有定位功能,每当打开手机打开GPS时,就会每隔五分钟,将定位点上传到高德猎鹰服务器。然后SAP端通过轨迹ID,调用猎鹰接口获取轨迹;但通过高德地图获取的定位点,有很多点的位置很偏,需要去掉。关于怎么去掉,猎鹰有自带的抽稀算法。
          于是,楼主出于兴趣,也模仿算法,写了个简易程序。

    *&---------------------------------------------------------------------*
    *& Report ZQUART
    *&---------------------------------------------------------------------*
    *&道格拉斯-普克(Douglas-Peuker)算法
    *& 注:gt_data 中存入的是算法前的坐标,gt_result中是存的是执行算法后的坐标
    *&     p_eps 代表阈值
    *&---------------------------------------------------------------------*
    REPORT zquart.
    
    TYPES: BEGIN OF ty_point,
             x TYPE p DECIMALS 5,"横坐标
             y TYPE p DECIMALS 5,"纵坐标
           END OF ty_point.
    DATA: gt_data TYPE STANDARD TABLE OF ty_point,
          wa_data TYPE ty_point.
    DATA: gt_result TYPE STANDARD TABLE OF ty_point.
    DATA: wa_point1 TYPE ty_point.
    DATA: wa_point2 TYPE ty_point.
    DATA: wa_point3 TYPE ty_point.
    
    DATA: distance TYPE p DECIMALS 5.
    
    PARAMETERS: p_eps TYPE p DECIMALS 5. "道格拉斯算法的阈值
    
    START-OF-SELECTION.
      wa_data-x = 1.
      wa_data-y = 1.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 5.
      wa_data-y = 5.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 1.
      wa_data-y = 3.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 3.
      wa_data-y = 6.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 4.
      wa_data-y = 1.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 6.
      wa_data-y = '1.5'.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 20.
      wa_data-y = 20.
      APPEND wa_data TO gt_data.
    
      wa_data-x = 10.
      wa_data-y = '8.4'.
      APPEND wa_data TO gt_data.
    
    
      SORT gt_data BY x."按横坐标排序
    
      APPEND gt_data[ 1 ] TO gt_result.  "起点
      APPEND gt_data[ lines( gt_data ) ] TO gt_result. "终点
    
      PERFORM find_point TABLES gt_data.
      SORT gt_result BY x.
    
      WRITE:/ '==================================================================='.
    
      LOOP AT gt_result INTO wa_data.
        WRITE: / wa_data-x, wa_data-y.
      ENDLOOP.
    
    END-OF-SELECTION.
    
    
      "计算点point0到直线(point1,point2)的距离
    FORM calc_distance USING point1 TYPE ty_point
                             point2 TYPE ty_point
                             point0 TYPE ty_point
                         CHANGING distance TYPE p .
    
      DATA a TYPE p DECIMALS 5.
      DATA b TYPE p DECIMALS 5.
      DATA c TYPE p DECIMALS 5.
      DATA: k TYPE p   DECIMALS 5.
    
      "如果横坐标相当,距离为点的横坐标减去直线的横坐标
      IF point2-x = point1-x.
        distance = abs( point0-x - point1-x ).
        EXIT.
      ENDIF.
    
      IF point2-y = point1-y.
        "如果斜率为零,那么距离为
        distance = abs( point0-y - point1-y ).
        EXIT.
      ENDIF.
    
      "斜率
      k = ( point2-y - point1-y ) /  ( point2-x - point1-x ).
      a = k.
      b = -1.
      c = point1-y - k * point1-x.
    
      distance = abs( a * point0-x + b * point0-y + c ) / sqrt( a * a + b * b ).
    
    ENDFORM.
    
    FORM find_point TABLES t_table." TYPE STANDARD TABLE ty_point.
      DATA: max_distance TYPE p DECIMALS 5.
      DATA: max_index TYPE i.  "记录距离最长点在内表中的索引
      DATA: current_distance TYPE p DECIMALS 5.
      DATA: table_left  TYPE STANDARD TABLE OF ty_point,
            table_right TYPE STANDARD TABLE OF ty_point.
    
      IF lines( t_table ) < 3.
        RETURN.
      ENDIF.
    
      wa_point1 = t_table[ 1 ].
      wa_point2 = t_table[ lines( t_table ) ].
    
      LOOP AT t_table INTO wa_data .
        AT FIRST .
          CONTINUE.
        ENDAT.
    
        AT LAST .
          CONTINUE.
        ENDAT.
    
        PERFORM calc_distance USING wa_point1
                                    wa_point2
                                    wa_data
                              CHANGING current_distance.
        IF current_distance > max_distance.
          max_distance = current_distance.
          max_index = sy-tabix.
        ENDIF.
      ENDLOOP.
    
      "如果最大距离大于阈值,则此点满足条件。将数据存入内表
      IF max_distance >= p_eps.
        APPEND t_table[ max_index ] TO gt_result.
    
        "左右两边分别调用form,再次寻找满足条件的点
        APPEND LINES OF t_table FROM 1 TO max_index TO table_left .
        APPEND LINES OF t_table FROM max_index TO lines( t_table ) TO table_right .
    
    *如果内表中有2个以上的点,则再次寻找大于阈值的点
        IF lines( table_left ) > 2.
          PERFORM find_point TABLES table_left.
        ENDIF.
    
        IF lines( table_right ) > 2.
          PERFORM find_point TABLES table_right.
        ENDIF.
      ENDIF.
    
    ENDFORM.

    最终结果,根据阈值的不同,抽稀后得到的坐标点也不一样:

     

     

     

     

    展开全文
  • 微信小程序地址导航功能通过点击地址或者导航来调用微信小程序自带的api来获取到自己的位置,并且进行跳转,然后再在新的页面里打开外部程序,例如高德地图或者百度地图,打开之后会自动出现导航页面,不过需要提前...

    微信小程序地址导航功能

    1. 微信小程序地址导航功能通过点击地址或者导航来调用微信小程序自带的api来获取到自己的位置,并且进行跳转,然后再在新的页面里打开外部程序,例如高德地图或者百度地图,打开之后会自动出现导航页面,不过需要提前设置好目的地,因为没有请求,所以我是直接写死的,一会儿会说如果是请求来的应该怎么做。

    2. 首先需要在app.json文件里声明permission字段,因为开发者需要填写获取用户地理位置的用途说明,如果不写则会出现如下图的弹框:
    在这里插入图片描述
    声明promission字段需要在app.json中的第一个大括号里面声明,代码如下:

     "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
      }
    

    3. 接下来则需要在wxml里写了,代码如下:

    <view bindtap="onGuideTap" data-latitude='35.41408' data-longitude='114.066224' data-bankName='新乡医学院'  style="margin-top:30rpx">
    	<image style="width:36%;height:110rpx;" class="mix" src="/image/导航.png"></image>
    	<view><text>地图导航</text></view>
    </view>
    

    因为我写的是样式是点击这个图片或者字,可以跳转到导航页面,当然也可以写其他方法,只要将view后边的写上去就行了,上边的代码,其中bindtap就是一个事件,当点击地图导航的时候,会执行这个函数,来跳转到导航页面,后边的data-latitude和data-longitude都是即将要导航到那里的经纬度,后边的名称。

    4.接下来就是wxjs文件了,代码如下:

     onLoad: function(options) {
        var that = this
        //获取当前的地理位置、速度
        wx.getLocation({
          type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
          success: function (res) {
            //赋值经纬度
            that.setData({
              latitude: res.latitude,
              longitude: res.longitude,
            })
          }
        })
      },
      bindcontroltap(e) {
        var that = this;
        if (e.controlId == 1) {
          that.setData({
            latitude: this.data.latitude,
            longitude: this.data.longitude,
            scale: 14,
          })
        }
      },
       onGuideTap: function (event) {
        var lat = Number(event.currentTarget.dataset.latitude);
        var lon = Number(event.currentTarget.dataset.longitude);
        var bankName = event.currentTarget.dataset.bankname;
        console.log(lat);
        console.log(lon);
        wx.openLocation({
          type: 'gcj02',
          latitude: lat,
          longitude: lon,
          name: bankName,
          scale: 28
        })
      },
    

    注:运行的时候需要在手机上调试,才可以看出效果

    展开全文
  • 怎么从数据库中获取多个课程的信息,并遍历在对应的位置上呢,现在我只能获取一个课程的信息而已,各位大神,求帮助。jsp代码如下  我的课程,每一节课都是一个新的开始 <li><a href="/course...
  • 一个基于EXT实现的树,先上图。 动态加载加右键菜单。 希望拿到可以跑起来看看效果的,需要按以下步骤做。 1 安装oracle,这个例子只做了oracle版本,如果需要,后期可以加上mysql版本,呵呵。 2 运行建用户及表...
  • 功能已经实现,但是core产生的位置我想固定产生到/app/core目录下,在没有使用genCore的时候我知道是这样设置:echo "/app/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern,用了genCore之后就不知道该...
  • react-native小问题?

    2016-02-23 17:24:47
    用react-native开发app , 播放音频,视频,上传文件,下载文件,发短信,音量调节,获取地理位置等等功能怎么实现啊? 需要用java实现还是用node模块实现? 能具体说一下各个的思路吗
  • 我做好了一个欢迎界面,并且做了下按钮触发,里面什么都还没有,我这边有一个游戏主程序,应该怎么样才能合理的添加进去呢? 添加的结果就是 点击这个按钮 就进入这个主程序。下面是代码 这个是我的欢迎界面的代码...
  • 需要在小程序的app.json中加入 permission: { ‘scope.userLocation’: { ‘desc’: ‘"x"需要获取你的地理位置’ } },就饿可以实现在小程序中支持苹果手机获取授权定位的获取位置授权 如下图所示: ...
  • XBoot 宣传视频 作者亲自制作XBoot文字快闪宣传视频 ...QQ交流群 475743731(付费),可获取各项目详细图文文档、疑问解答 免费交流群 562962309 作者博客:http://blog.exrick.cn 捐赠
  • 之前写了一篇关于获取当前位置的文章。现在这篇文章将探讨一下,如何用地图显示地理信息,以及我们怎么自定义地图的Annotation,也就是地图图钉。 接下来的叙述都是为了实现下面的效果: 上图显示的内容包括:...
  • service常驻后台

    千次阅读 2016-12-15 11:15:23
    大家在工作当中往往有的时候需求就是需要一个常驻后台的service,比如说,即时通讯、在后台定时获取位置等等。但是这些往往是google工程师不想看到的,没有办法,国内都是这么玩,你要是在后台轻易被杀死了,人家就...
  • 我这里选择改变布局约束来实现选中效果 [我有个用object-c做APP的同事他说,我觉得这个应该去获取色块的位置,然后赋给选中用的View,然后横屏的时候也这么重新定位一下。我只想说: 好像很麻烦啊 ] 那改变布局约束...
  • 当检测到 wxapkg 为子包时, 添加-s 参数指定主包源码路径即可自动将子包的 wxss,wxml,js 解析到主包的对应位置下. 完整流程大致如下: 获取主包和若干子包 解包主包 windows系统使用: ./bingo.bat testpkg/master-...
  • 正如我在某次“还我旧版”运动中听到的声音,“不管怎么改版,只要友邻们还在就好”,改版是豆瓣不断良好发展的必经之路,但这句话中对友邻的珍重又令我感受到了豆瓣最宝贵的特质。 豆瓣作为一个工具的价值可以通过...
  • 正如我在某次“还我旧版”运动中听到的声音,“不管怎么改版,只要友邻们还在就好”,改版是豆瓣不断良好发展的必经之路,但这句话中对友邻的珍重又令我感受到了豆瓣最宝贵的特质。 豆瓣作为一个工具的价值可以通过...
  • 线程安全的map怎么实现 流程控制 昨天那个在for循环里append元素的同事,今天还在么? golang面试官:for select时,如果通道已经关闭会怎么样?如果只有一个case呢? 进阶 包管理 学go mod就够了! ...
  • asp.net知识库

    2015-06-18 08:45:45
    怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 在MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0)...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

怎么实现app获取位置