微信小程序地图导航功能实现完整源代码附效果图(推荐)


Posted in Javascript onApril 28, 2019

正文:

一:需求及效果图展示

从后端API获取到起始地和目的地的经纬度坐标与地名。用户点击起始地便打开地图展示坐标的附近街景,路线,或者打开外部地图。

微信小程序地图导航功能实现完整源代码附效果图(推荐)

二:源代码

<block wx:for="{{data_2}}" wx:key='index' wx:if="{{data_2.length}}">
 
     <view style='margin-left:10rpx;'>订单号: {{item.order_num}}</view>
     <view class='page_row'>
      <view class='centent'>
       <view style='margin-left:10rpx;' wx:if='{{item.server_info.linkman}}'>下单人: {{item.server_info.linkman}}
        <text style='color:#999;margin-left:40rpx;font-size:32rpx;' wx:if='{{item.server_info.tel}}'>联系电话: {{item.server_info.tel}}</text>
       </view>
       <view style='color:#999;margin-top:15rpx;' wx:if='{{item.car_info.title}}'>
        <view style='color:#999;margin-left:10rpx;font-size:28rpx' bindtap='apen_add'data-name='{{item.server_info.address}}' data-latitude_siji='{{item.server_info.coordinate_start}}'><image style='width:32rpx;height:32rpx' src='../../image/location.png'/> 导航至起始地:{{item.server_info.address}} </view>
       </view>
       <view style='color:#999;margin-top:15rpx;' wx:if='{{item.car_info.title}}'>
        <view style='color:#999;margin-left:10rpx;font-size:28rpx' bindtap='apen_add' data-name='{{item.server_info.address_end_text}}' data-longitude_siji='{{item.server_info.coordinate_end}}'><image style='width:32rpx;height:32rpx' src='/image/location.png'/> 导航至目的地: {{item.server_info.address_end_text}} </view>
       </view>
       <view style='color:#999;margin-top:15rpx;' wx:if='{{item.car_info.title}}'>
        <view style='color:#999;margin-left:10rpx;font-size:28rpx'> 分配时间:{{item.time_tired}}</view>
       </view>
      </view>
     </view>
     <view class='xxx'></view>
   </block>
apen_add: function (e) {
  var that = this
  var latitude, longitude
  var name = e.currentTarget.dataset.name
  if (e.currentTarget.dataset.latitude_siji) {
   var latitude_siji = e.currentTarget.dataset.latitude_siji.split(',')
   latitude = Number(latitude_siji[0])
   longitude = Number(latitude_siji[1])
  }
  if (e.currentTarget.dataset.longitude_siji) {
   var longitude_siji = e.currentTarget.dataset.longitude_siji.split(',')
   latitude = Number(longitude_siji[0])
   longitude = Number(longitude_siji[1])
  }
  wx.getSetting({
   success: (res) => {
    if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
     wx.showModal({
      title: '是否授权当前位置',
      content: '需要获取您的地理位置,请确认授权,否则地图定位功能将无法使用',
      success: function (res) {
       if (res.cancel) {
        console.info("1授权失败返回数据");
 
       } else if (res.confirm) {
        //village_LBS(that);
        wx.openSetting({
         success: function (data) {
          if (data.authSetting["scope.userLocation"] == true) {
           wx.showToast({
            title: '授权成功',
            icon: 'success',
            duration: 5000
           })
           wx.openLocation({
            latitude: latitude,
            longitude: longitude,
            name: name,
            scale: 28
           }) 
          } else {
           wx.showToast({
            title: '授权失败',
            icon: 'success',
            duration: 5000
           })
          }
         }
        })
       }
      }
     })
    } else {
     wx.openLocation({
      latitude: latitude,
      longitude: longitude,
      name: name,
      scale: 28
     }) 
    }
   }
  })
 },

数据请求

show_data: function () {
  var that = this;
  if (wx.getStorageSync('register') != '司机') {
   var data = {
    openid: app._openid,
    program_id: app.jtappid,
    only_num: app._openid,
    online_code: wx.getStorageSync('online_code')
   }
   var url = '/pg.php/CarTrailer/roder_list';
   util.request(url, 'get', data, '正在加载', function (res) {
    res.data.reverse()
    for (var i = 0; i < res.data.length; i++) {
     res.data[i].time_xd = util.js_date_time(res.data[i].time_xd)
     switch (res.data[i].state) {
      case '1':
       that.setData({
        data_1: that.data.data_1.concat(res.data[i]),
       })
       break;
      case '2':
       that.setData({
        data_2: that.data.data_2.concat(res.data[i]),
       })
       break;
      case '3':
       that.setData({
        data_3: that.data.data_3.concat(res.data[i]),
       })
       break;
      case '4':
       that.setData({
        data_4: that.data.data_4.concat(res.data[i]),
       })
       break;
     }
    }
   })
  } else {
   var data = {
    openid: app._openid,
    program_id: app.jtappid,
    online_code: wx.getStorageSync('online_code')
   }
   var url = '/pg.php/CarTrailer/driver_order_list';
   util.request(url, 'get', data, '正在加载', function (res) {
    for (var i = 0; i < res.data.length; i++) {
     res.data[i].time_tired = util.js_date_time(res.data[i].time_tired)
    }
    res.data.reverse()
    that.setData({
     siji: true
    })
    for (var i = 0; i < res.data.length; i++) {
     switch (res.data[i].state) {
      case '1':
       that.setData({
        data_1: that.data.data_1.concat(res.data[i]),
       })
       break;
      case '2':
       that.setData({
        data_2: that.data.data_2.concat(res.data[i]),
       })
       break;
      case '3':
       that.setData({
        data_3: that.data.data_3.concat(res.data[i]),
       })
       break;
      case '4':
       that.setData({
        data_4: that.data.data_4.concat(res.data[i]),
       })
       break;
     }
    }
   })
  }
 },

以上所述是小编给大家介绍的微信小程序地图导航功能实现详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
可实现多表单提交的javascript函数
Aug 01 Javascript
简明json介绍
Sep 28 Javascript
jqPlot 基于jquery的画图插件
Apr 26 Javascript
jquery操作select方法汇总
Feb 05 Javascript
浅谈document.write()输出样式
May 07 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
js实现常用排序算法
Aug 09 Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 #Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 #Javascript
详解VUE项目中安装和使用vant组件
Apr 28 #Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 #Javascript
vue slot与传参实例代码讲解
Apr 28 #Javascript
Vue项目从webpack3.x升级webpack4不完全指南
Apr 28 #Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 #jQuery
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
基于mysql的论坛(4)
2006/10/09 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
PHP模块化安装教程
2016/06/01 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python 中如何获取列表的索引
2019/07/02 Python
一个入门级python爬虫教程详解
2021/01/27 Python
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
文秘自荐信
2013/10/20 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书