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


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 valueOf 使用方法
Dec 28 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
JavaScript动态改变表格单元格内容的方法
Mar 30 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
javascript中的面向对象
Mar 30 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
JS写谷歌浏览器chrome的外挂实例
Jan 11 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
jquery.pagination.js分页使用教程
Oct 23 jQuery
React冒泡和阻止冒泡的应用详解
Aug 18 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 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版(2)
2006/10/09 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
Python 第一步 hello world
2009/09/25 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python实现大量图片重命名
2020/03/23 Python
Python Map 函数的使用
2020/08/28 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
介绍一下write命令
2014/08/10 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
致400米运动员广播稿
2014/02/07 职场文书
建筑安全生产责任书
2014/07/22 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
党员倡议书
2015/01/19 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis