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


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的面向对象(二)
Nov 09 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
Knockout数组(observable)使用详解示例
Nov 15 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
Aug 24 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
JS判断用户用的哪个浏览器实例详解
Oct 09 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
js中实现继承的五种方法
Jan 25 Javascript
js属性对象的hasOwnProperty方法的使用
Feb 05 Javascript
JavaScript实现班级抽签小程序
May 19 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
怎样在php中使用PDF文档功能
2006/10/09 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
学习ExtJS 访问容器对象
2009/10/07 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
简单的命令查看安装的python版本号
2020/08/28 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
python基础之函数的定义和调用
2021/10/24 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android