您的位置:首页 > 移动开发 > 微信开发

微信小程序:地图导航功能实现完整源代码附效果图,讲解

2018-01-23 17:02 1081 查看
一:需求及效果图展示

从后端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;
}
}
})
}
},
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: