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


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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
JavaScript游戏之优化篇
Nov 08 Javascript
js同比例缩放图片的小例子
Oct 30 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
jQuery UI插件自定义confirm确认框的方法
Mar 20 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
May 10 Javascript
Javascript实现找不同色块的游戏
Jul 17 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
解决php中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python 26进制计算实现方法
2015/05/28 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python中取整的几种方法小结
2017/01/06 Python
python简单贪吃蛇开发
2019/01/28 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python实现tail -f 功能
2020/01/17 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
会计系毕业个人自荐信格式
2013/09/23 职场文书
大专生找工作自荐书
2014/06/10 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang