小程序地图

js
app.js需要定义一下

"permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  },
const dianpu = "../../../assets/gps/dianpu5.png";
const dingwei = "../../../assets/gps/gps.png"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    addmissage: '选的位置',
    // markers	 Array	标记点
    stitle: '故宫',
    latitude: "",
    longitude: "",
    scale: 14,
    markers: [{
        iconPath: dianpu,
        id: 0,
        // 28.2422800000,113.0841100000
        // 湖南省长沙市长沙县星沙街道惊塘路社区阳光紫薇园3107
        latitude: 28.2422800000,
        longitude: 113.0841100000,
        width: 30,
        height: 30,
        content: '123'
      },
      {
        iconPath: dianpu,
        id: 1,
        // 28.2644900000,113.0523610000
        // 长沙县湘龙街道湘润社区龙塘小区B18栋009
        latitude: 28.2644900000,
        longitude: 113.0523610000,
        width: 30,
        height: 30
      },
      {
        iconPath: dianpu,
        id: 2,
        // 28.1996100000,113.1316910000
        // 长沙县黄兴大道与人民路交汇处领东汇5113
        latitude: 28.1996100000,
        longitude: 113.1316910000,
        width: 30,
        height: 30
      },
      {
        iconPath: dianpu,
        id: 3,
        // 28.2484900000,112.9967500000
        // 长沙市开福区万科城二期B区S4栋N单元105号门面
        latitude: 28.2484900000,
        longitude: 112.9967500000,
        width: 30,
        height: 30
      },
      {
        iconPath: dianpu,
        id: 4,
        // 28.2528600000,113.1055000000
        content: '长沙县星沙街道松雅社区恒大翡翠华庭15栋108号',
        latitude: 28.2528600000,
        longitude: 113.1055000000,
        width: 30,
        height: 30
      }
    ],
    // controls控件 是左下角圆圈小图标,用户无论放大多少,点这里可以立刻回到当前定位(控件(更新一下,即将废弃,建议使用 cover-view 代替))
    controls: [{
      id: 1,
      iconPath: dingwei,
      position: {
        left: 15,
        top: 260 - 50,
        width: 40,
        height: 40
      },
      clickable: true
    }],
    distanceArr: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    var that = this
    //获取当前的地理位置、速度
    wx.getLocation({
      type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
      success: function(res) {
        console.log(res)
        //赋值经纬度
        that.setData({
          latitude: res.latitude,
          longitude: res.longitude,

        })
      },
      fail() {
        wx.showModal({
          title: '警告',
          content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
          showCancel: false,
          confirmText: '重新授权', // 此处的值只能在4个字节以内,超了会报错
          success: function(res) {
            // 用户没有授权成功,不需要改变值
            if (res.confirm) {
              console.log('用户点击了“返回授权”');
              wx.openSetting()
            }
          }
        })
      }
    })



  },
  //controls控件的点击事件
  bindcontroltap(e) {
    var that = this;
    if (e.controlId == 1) {
      that.setData({
        latitude: this.data.latitude,
        longitude: this.data.longitude,
        scale: 14,
      })
    }
  },
  // 点击markers标记的点 然后导航
  gotohere: function(res) {
    console.log(res);
    let lat = ''; // 获取点击的markers经纬度
    let lon = ''; // 获取点击的markers经纬度
    let name = ''; // 获取点击的markers名称
    let markerId = res.markerId; // 获取点击的markers  id
    let markers = res.currentTarget.dataset.markers; // 获取markers列表
    console.log(markers)
    for (let item of markers) {
      if (item.id === markerId) {
        lat = item.latitude;
        lon = item.longitude;
        console.log(item)
        name = item.content; // item.callout.content; 如果有就用
        console.log(name)
        wx.openLocation({ // 打开微信内置地图,实现导航功能(在内置地图里面打开地图软件)
          latitude: lat,
          longitude: lon,
          name: name,
          success: function(res) {
            console.log(res);
          },
          fail: function(res) {
            console.log(res);
          }
        })
        break;
      }
    }
  },
  //导航
  onGuideTap: function(event) {
    var lat = Number(event.currentTarget.dataset.latitude);
    var lon = Number(event.currentTarget.dataset.longitude);
    var bankName = event.currentTarget.dataset.bankname;
    console.log(lat);
    console.log(lon);
    wx.chooseLocation({
      success: res => {
        console.log(res)
        var lats = res.latitude
        var longs = res.longitude
        console.log(lats)
        console.log(longs)
        this.setData({
          lats: res.latitude,
          longs: res.longitude
        })
      }
    })
    wx.openLocation({
      type: 'gcj02',
      latitude: this.data.lats,
      longitude: this.data.longs,
      name: bankName,
      scale: 28,
      success: res => {
        console.log(res)
      }
    })
  },



})

html

 <view class="map_container">
  <map class='map' longitude='{{longitude}}' latitude='{{latitude}}' scale='{{scale}}' data-markers="{{markers}}" markers='{{markers}}' controls="{{controls}}" bindcontroltap="bindcontroltap" bindmarkertap="gotohere" polyline='{{polyline}}' circles="{{circles}}" bindcontroltap='bindcontroltap'
    show-location></map>
</view>
 
 
<!-- 以下是导航部分 -->
 
<view class='list-guide'>
<!-- 这里的坐标本应该是从服务器获取数据的,这时丈先写死在页面上了 -->
  <view bindtap="onGuideTap" data-latitude='{{lats}}' data-longitude='{{longs}}' data-bankName='最高人民检察院'>
    <!-- <image src='/images/banklist/daohang.png' class='list-guide-imgae'></image> -->
    <text  class='list-guide-text'>导航去附近的店购买</text>
  </view>
  <!-- <view bindtap='onbankTap' data-bankId="{{item.BANK_ID}}"> -->
    <!-- <image src='/images/banklist/xiangqing.png' class='list-guide-imgae'></image> -->
    <!-- <text class='list-guide-text'>详情</text> -->
  <!-- </view> -->
 
</view>

css


page{
  margin: 0;
  padding: 0;
}
.map_container {
  height: 100%;
  width: 100%;
}
 
.map {
  height: 100%;
  width: 100%;
}
 
 .listtexa{
   width: 100%;
 }
 
 
.list-guide{
  position: fixed;
  flex-direction: row; 
  justify-content:space-around;
  border-top: 1px solid #ededed;
  height: 80rpx;
  bottom: 0rpx;
  background-color: pink;
  width: 100%;
}
/* .list-guide-imgae{
  height: 70rpx;
  width: 70rpx;
  margin-right: 20px;
  vertical-align: middle;
} */
.list-guide-text{
  vertical-align: middle;
  line-height: 90rpx;
  width: 100%;
  font-size: 35rpx;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp小程序地图导航是一种基于uniapp框架开发的小程序功能,用于在小程序中实现地图导航的功能。 通过uniapp小程序地图导航,用户可以根据自己的需求选择起点和终点位置,然后在地图界面上展示出最佳的路径规划,并提供导航功能指引用户前往目的地。 uniapp小程序地图导航功能的实现需要借助地图API,一般选择常用的地图服务商,如百度地图、高德地图、腾讯地图等。 在实现地图导航功能时,首先需要在小程序的页面中引入地图组件,然后获取用户当前位置,并将其显示在地图上。接着,用户可以通过选择地点、输入地址等方式确定起点和终点位置。在用户确定起终点之后,调用相应的地图API来进行路径规划,并将规划结果展示在地图上。 除了展示路径规划,uniapp小程序地图导航还可以提供导航指引。导航指引可以包括语音播报、图像显示等方式,帮助用户按照规划路径前往目的地。 uniapp小程序地图导航还可以提供一些辅助功能,如周边搜索、路线规划查询等功能,方便用户更好地掌握自己的出行情况。 总之,uniapp小程序地图导航是一种非常实用的小程序功能,可以帮助用户在小程序中方便地实现地图导航,规划路径,并提供导航指引,提升用户的出行体验。它的实现需要借助地图API,并结合uniapp框架进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值