小程序使用map

这篇具有很好参考价值的文章主要介绍了小程序使用map。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原生腾讯地图:

直接使用map标签,其他配置参考wx文档map,

下面代码只作举例

wxml: 

<map 
enable-building="{{true}}"
show-scale="{{true}}" 
show-compass="{{true}}" 
show-location="{{true}}" 
latitude="40.13688946041713" 
longitude="116.20873211575088" 
bindtap="takIt" 
class="txmap">
</map>

wxss:

.txmap{
    width: 100vw;
    height: 100vh;
}

js: 

data: {
    markers:[
      {
        id:0,
        iconPath:"/pages/static/img/晕倒图.png",
        width:50,
        height:50,
        longitude:116.20873211575088,
        latitude:40.13688946041713
      }
    ]
  },
  takIt(e){
    console.log(e);
  },

还有一种情况,就是不仅要使用地图,还要使用路线导航之类的,这个时候就要交给插件了:

先看实测效果图:

小程序使用map

那么就开始枯燥无味的走流程了:

首先要获取到腾讯位置服务的key码:

  腾讯位置服务 - 立足生态,连接未来

登陆注册之后点击

小程序使用map

找到 应用管理-我的应用;

创建应用:

小程序使用map

 创建完成之后点击-----添加key:

小程序使用map

 有了key码之后就是插件的使用了:

1、插件申请接入:

在腾讯公众平台中, “微信小程序官方后台-设置-第三方服务-插件管理” 里点击 “添加插件”,搜索 “腾讯位置服务路线规划” 申请,审核通过后,小程序开发者可在小程序内使用该插件。

2、引入插件包:

路线规划appId: wx50b5593e81dd937a

// app.json
{
  "plugins": {
    "routePlan": {
      "version": "1.0.19",
      "provider": "wx50b5593e81dd937a"
    }
  }
}

3、设置定位授权:

路线规划插件需要小程序提供定位授权才能够正常使用定位功能:

// app.json
{
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序定位"
    }
  }
}

4、使用插件:

插件页面调用示例:

let plugin = requirePlugin('routePlan');
let key = '';  //使用在腾讯位置服务申请的key
let referer = '';   //调用插件的app的名称
let endPoint = JSON.stringify({  //终点
  'name': '北京西站',
  'latitude': 39.894806,
  'longitude': 116.321592
});

    // 还可以拼接navigation参数,navigation=1代表显示导航按钮,为0代表不显示导航按钮
wx.navigateTo({
  url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint
});

插件页面参数

属性 类型 说明 是否必须传入
key string 调用路线规划插件需要申请腾讯位置服务的服务账号,key是开发者的唯一标识。申请key
referer string 调用来源,一般为您的应用名称,请务必填写!
endPoint string 终点
startPoint string 起点, 如果不传起点参数,则起点默认当前用户的真实定位
mode string 默认出行规划方式,目前支持三种方式:driving(驾车)、transit(公交)、walking(步行),不传则默认发起驾车规划
navigation number 值为1时,开启驾车导航功能;默认不开启此功能
themeColor string 插件主题色,16进制色值,默认是#427CFF

startPoint 说明

属性 类型 说明 是否必须传入
name string 位置名称
latitude number 纬度
longitude number 经度

endPoint 说明

属性 类型 说明 是否必须传入
name string 位置名称
latitude number 纬度
longitude number 经度
poiid string 终点POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。

注意:个人账号在类目不对或者tx看你不顺眼的情况下是通过不了权限的

复制..不是,研究到这里的时候可能会发现一个问题,就是如果没有资质是用不了页面的,这个时候可以在开发者工具里看报错提示,会提示要你引入组件,这个时候多点几遍,多试几遍,或许你会发现,他还是不行啊,但是很快啊!猛点几下,有可能就通过了。

高德地图:

令人费解的是,虽然高德地图的key码用上了,但是用的还是tengxun地图,也就是wx自带的map组件

首先如果没有高德开发者账号,就要去注册:

地址:高德开放平台 | 高德地图API

 然后去创建新应用:

小程序使用map

 然后添加key:

小程序使用map

 就可以得到key码:

小程序使用map

下载并安装微信小程序插件:

下载开发包并解压:相关下载-微信小程序插件 | 高德地图API

解压后得到 amap-wx.js 文件,在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js 文件拷贝到 libs 的本地目录下,完成安装。

小程序使用map

设置安全通讯域名:

在 "设置"->"开发设置" 中设置 request 合法域名,将 https://restapi.amap.com 中添加进去

小程序使用map

之后又是劳累的cv啦:

wxml

地图的展现还是利用的map组件

<view class="tui-map">
  <map id="map" longitude="{{currentLo}}" latitude="{{currentLa}}" scale="{{scale}}" markers="{{markers}}" polyline="{{polyline}}"  include-points="{{includePoints}}" show-location style="width: 100%; height: 100%;"></map>
</view>
<view class="tui-map-search" bindtap="getAddress">
   <icon size='20' type='search' class='tui-map-search-icon'></icon> 
  <input class="tui-map-input" placeholder="搜索" focus="{{focusStatus}}"></input>
</view>
<view class="tui-search-bottom {{show ? '' : 'tui-hide'}}">
  <view class="page-group">
    <view class="page-nav-list {{statusType == 'car' ? 'active' : ''}}" data-type="car" bindtap="goTo">驾车</view>
    <view class="page-nav-list {{statusType == 'walk' ? 'active' : ''}}" data-type="walk" bindtap="goTo">步行</view>
    <view class="page-nav-list {{statusType == 'ride' ? 'active' : ''}}" data-type="ride" bindtap="goTo">骑行</view>
  </view>
  <view class="tui-warn">
    {{distance}}米
  </view>
  <view class="tui-warn">
    {{duration}}分钟
  </view>
</view>

wxss


  .tui-map-search{
    width: 100%;
    height: 80rpx;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1000000;
    box-sizing: border-box;
    padding: 5rpx 10px;
    background-color: #fff;
    line-height: 70rpx;
  }
  .tui-map-input{
    height: 70rpx;
    line-height: 70rpx;
    font-size: 30rpx;
    margin-left: 25px;
  }
  .tui-map-search-icon{
    position: absolute;
    top: calc(50% - 10px);
    left: 10px;
  }
  .tui-map{
    width: 100%;
    height: calc(100% - 80rpx);
    position: fixed;
    bottom: 0;
    left: 0;
  }
  .tui-map-direction{
    width: 32px;
    height: 32px;
    position: fixed;
    right: 10px;
    bottom: 80px;
    z-index: 100000;
  }
  
  .page-group{
    display: table;
    width: 100%;
    table-layout: fixed;
    background-color: #fff;
  }
  .page-nav-list{
    padding:20rpx 0 ;
    font-size: 30rpx;
    display: table-cell;
    text-align: center;
    width: 100%;
    color: #222;
  }
  .page-nav-list.active{color:blue;}
  .tui-warn{
    height: 50px;
    line-height: 50px;
    padding-left: 10px;
    color: lightseagreen;
    font-size: 30rpx;
  }
  .tui-search-bottom{
    height: 150px;
    background: #fff;
    width: 100%;
    position: fixed;
    bottom: 0;
    left: 0;
    z-index: 1000;
  }

js

首先要把下载好的js导入js文件

var amapFile = require('../libs/amap-wx.js');
var markersData = [];
Page({

  /**
   * 页面的初始数据
   */
  data: {
    key: '8ec405c4f28b27bc6ff8171184d066cd',
    show: false,
    currentLo : null,
    currentLa : null,
    newCurrentLo : null,
    newCurrentLa : null,
    distance : 0,
    duration : 0,
    markers : null,
    scale: 16,
    polyline: null,
    statusType: 'car',
    includePoints:[]
  },
  makertap: function(e) {
    var id = e.markerId;
    var that = this;
    that.showMarkerInfo(markersData,id);
    that.changeMarkerColor(markersData,id);
  },
  /**
   * 生命周期函数--监听页面加载
   */
   getAddress(e){
    var _this = this;
    wx.chooseLocation({
      success(res){
        var markers = _this.data.markers;
        markers.push({
          id: 0,
          longitude: res.longitude,
          latitude: res.latitude,
          title: res.address,
          // 自定义图标
          iconPath: '',
          width: 32,
          height: 32
        });

        var points = _this.data.includePoints;
        points.push({
          longitude: res.longitude,
          latitude: res.latitude
        });
        _this.setData({
          newCurrentLo: res.longitude,
          newCurrentLa: res.latitude,
          includePoints: points,
          markers: markers,
          show:true
        });
        _this.getPolyline(_this.data.statusType);
      }
    });
  },
  drawPolyline(self,color){
    return {
      origin: this.data.currentLo + ',' + this.data.currentLa,
      destination: this.data.newCurrentLo + ',' + this.data.newCurrentLa,
      success(data) {
        var points = [];
        if (data.paths && data.paths[0] && data.paths[0].steps) {
          var steps = data.paths[0].steps;
          for (var i = 0; i < steps.length; i++) {
            var poLen = steps[i].polyline.split(';');
            for (var j = 0; j < poLen.length; j++) {
              points.push({
                longitude: parseFloat(poLen[j].split(',')[0]),
                latitude: parseFloat(poLen[j].split(',')[1])
              })
            }
          }
        }
        self.setData({
          distance: data.paths[0].distance,
          duration: parseInt(data.paths[0].duration/60),
          polyline: [{
            points: points,
            color: color,
            width: 6,
            arrowLine: true
          }]
        });
      }
    }
  },
  getPolyline(_type){
    var amap = new amapFile.AMapWX({ key: this.data.key });
    var self = this;
    switch (_type){
      case 'car':
        amap.getDrivingRoute(this.drawPolyline(this,"#0091ff"));
        break;
      case 'walk':
        amap.getWalkingRoute(this.drawPolyline(this, "#1afa29"));
        break;
      case 'ride':
        amap.getRidingRoute(this.drawPolyline(this, "#1296db"));
        break;
      default:
        return false;
    }
  },
  goTo(e){
    var _type = e.currentTarget.dataset.type;
    this.setData({statusType : _type});
    this.getPolyline(_type);
  },
  onLoad(options) {
    var _this = this;
    wx.getLocation({
      success(res){
        _this.setData({ 
          currentLo: res.longitude, 
          currentLa: res.latitude,
          includePoints: [{
            longitude: res.longitude,
            latitude: res.latitude
          }],
          markers: [{
            id: 0,
            longitude: res.longitude,
            latitude: res.latitude,
            title: res.address,
            // 自定义图标
            iconPath: '',
            width: 32,
            height: 32
          }]
        });
      }
    })
  },
})

总结:

微信小程序的地图走插件的话完全可以跳转到其他导航软件文章来源地址https://www.toymoban.com/news/detail-458276.html

到了这里,关于小程序使用map的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序使用腾讯地图完整流程

    前言:开发小程序需要得到定位和位置的省市区文字信息,看了所有的文章都没有一个完整和像样的,全是copy来,copy去的文章 - _ -!,一怒之下,开始了自己的踩坑之路 腾讯地图地址:腾讯位置服务 - 立足生态,连接未来 1.常规的申请账号登录 2.新建应用  3.点击添加key  

    2023年04月09日
    浏览(58)
  • 小程序使用MAP地图详细讲解

            小程序使用地图功能通常需要依赖第三方地图服务或者框架,最常见的是使用微信小程序的内置地图组件和API。以下是使用微信小程序中的地图组件的步骤和一些常用功能属性介绍,以及示例代码。         1.打开小程序项目,确保已经开通了相关权限,如地

    2024年02月03日
    浏览(33)
  • 【uniapp小程序实战】—— 使用腾讯地图获取定位

    本篇文章分享一下我在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到的获取定位功能。uniapp官方也提供了相应的API供我们使用。 官网地址:uni.getLocation(OBJECT)) uni.getLocation(OBJECT) 获取当前的地理位置、速度。 OBJECT 参数说明 参数名 类

    2024年02月03日
    浏览(61)
  • 微信小程序使用地图map (详细)

    直接看代码: 可直接赋值实现,图标可根据自己需要更改 小程序地理定位qqmap-wx-jssdk.js:qqmap-wx-jssdk.js 点击可进行下载里边的 :下载微信小程序JavaScriptSDK

    2024年02月11日
    浏览(51)
  • uniapp微信小程序使用腾讯地图选点插件

    在A页面获取当前经纬度之后跳转至B页面打开腾讯地图选点插件 注意需要把微信开发者工具中的本地设置中的版本改为2.17.0,不然会报错 2.1使用腾讯地图 lbs.qq.com,控制台-应用管理-我的应用中,创建应用,并在相应的应用中创建Key。 注意勾选WebServiceAPI和微信小程序 web配置

    2024年02月09日
    浏览(66)
  • 租房小程序使用uniapp展示地图map

    开源字节的租房小程序一个关于房屋租赁类的APP,用的uni-app实现 ,这种app少不了的就是经纪人,位置信息。我们的代码开源免费,欢迎交流使用。 map地图组件使用时直接在template中使用map/map标签,标签中可嵌套map属性 map最常用到的属性:     longitude  中心经度     la

    2024年02月09日
    浏览(38)
  • 需求:微信小程序使用腾讯地图,做地点搜索!(完整版)

    先来看看我需要的效果吧! 话不多说,开始吧! 既然是腾讯地图,就要打开腾讯地图开放平台参考哦,放个链接:https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview 第一步:配置微信小程序需要用的key,WebServiceAPI,在微信开发者平台添加合法域名,下载SDKjs放在代码中 注意:

    2024年02月04日
    浏览(49)
  • uni-app 小程序使用腾讯地图完成搜索功能

    前言 使用uni-app开发小程序时候使用腾讯地图原生SDK是,要把原生写法转成vue写法在这记录一下。 我们需要注意的是使用高德地图时我们不仅要引入SDK,还要再uni-app中配置允许使用。 由于uni-app内置地图就是腾讯,所以获取位置的api,uni.getLocation坐标不用转换,直接使用。

    2024年02月08日
    浏览(64)
  • 微信小程序地图控件Map的简单配置及使用

    .wxml .js .wxss

    2024年02月05日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包