高德地图实现-微信小程序地图导航

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

效果图:

微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序

一、准备阶段

  • 1、在高德开放平台注册成为开发者
  • 2、申请开发者密钥(key)。
  • 3、下载并解压高德地图微信小程序SDK

高德开放平台:

注册账号(https://lbs.amap.com/)) 申请小程序应用的 key
微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序

应用管理(https://console.amap.com/dev/key/app)) -> 我的应用 -> 创建新应用
微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序
生成的 key 即可用在程序中

  • 下载相关 sdk 文件,导入 amap-wx.js 到项目中:https://lbs.amap.com/api/wx/download

微信小程序:

1.在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js (amap-wx.js 从相关下载页面下载的 zip 文件解压后得到)文件拷贝到 libs 的本地目录下,如下图所示。
微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序

2.设置小程序安全通讯域名,为了保证高德小程序 SDK 中提供的功能的正常使用,需要设置安全域名。
登录微信公众平台,在 “设置”->“开发设置” 中设置 request 合法域名,将 https://restapi.amap.com 中添加进去,如下图所示:
微信小程序使用高德地图,高德地图,微信小程序,微信小程序,notepad++,小程序文章来源地址https://www.toymoban.com/news/detail-714993.html

  1. app.json中加入
"permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示",
      "dowload": "您的文件访问权限用于打开文件"
    }

  },

在你需要引用地图的页面的js文件中引入 amap-wx.js 文件。

var amapFile = require('../../../libs/amap-wx.130'); //如:..­/..­/libs/amap-wx.js

完整代码


// pages/map/map-container/map-container.js
import {
  baipaoGps
} from "../../../utils/api/car.js";
//百度地图
var bmap = require('../../../libs/bmap-wx.min.js');
//高德地图
var amapFile = require('../../../libs/amap-wx.130');
Page({
  data: {
    longitude: 117.3590007750093, //经度
    latitude: 22.846911841310202, //维度
    scale: 17, //地图默认缩放等级
    showModal: false, //弹框显隐
    modalData: {}, //详情信息
    G: {
      pi: 3.141592653589793,
      a: 6378245,
      ee: .006693421622965943,
      x_pi: 52.35987755982988
    },
    licence: '', //车牌号
    markers: [], //点位数据
    gpsInfo: {}, //定位数据
  },

  onLoad: function (options) {
    if (options) {
      if (options.gpsInfo) {
        const decodedGpsInfo = decodeURIComponent(options.gpsInfo);
        const gpsInfo = JSON.parse(decodedGpsInfo);

        if (gpsInfo.type === '2') {
          // // 创建百度地图实例
          const BaiDuMap = new bmap.AMapWX({
            key: '', // 你的高德地图API Key
          });
        } else if (gpsInfo.type === '2') {
          // 创建高德地图实例
          const myAmapFun = new amapFile.AMapWX({
            key: '', // 你的高德地图API Key
          });
        }
        this.data.markers.push(gpsInfo);
        this.setData({
          markers: this.data.markers
        });
        // //初始化地图
        // this.mapCtx = wx.createMapContext('map');
        this.loadMarkers();
      }

    } else {
      wx.showToast({
        title: '车牌号为空',
        icon: 'none'
      })
    }
  },

  loadMarkers: function () {
    //生成 markers 列表,用于在地图上展示
    let markersData = this.data.markers.map(marker => {
      // console.log(marker)
      var a = this.transfor2Mars(Number(marker.lat), Number(marker.lng));
      return {
        id: Number(marker.id),
        longitude: a.Lng,
        latitude: a.Lat,
        vehNum: marker.licenseName,
        location: marker.address,
        iconPath: '../../../static/img/marker.png',
        width: 40,
        height: 40,
      };

    });
    this.setData({
      markers: markersData,
      longitude: markersData[0].longitude,
      latitude: markersData[0].latitude
    });
  },
  // 点击标记点时触发
  markertap(e) {
    //点击 marker 时触发,获取对应的点位信息并展示弹框
    // console.log(e.detail)
    let markerData = this.data.markers.find(marker => marker.id === e.detail.markerId);
    this.setData({
      showModal: true,
      modalData: markerData
    });
  },
  // 关闭弹框
  onClose() {
    this.setData({
      showModal: false
    });
  },
  navigateToMap() {
    const modalData = this.data.modalData;
    const {
      longitude,
      latitude
    } = modalData;
    // 调用小程序API打开高德地图并进行导航
    wx.openLocation({
      longitude,
      latitude,
      name: modalData.location, // 标记点名称,可根据实际情况设置
      scale: 18, // 地图缩放级别,可根据实际情况设置
    });
  },
  isOutOfChina(e, a) {
    return a < 72.004 || a > 137.8347 || (e < .8293 || e > 55.8271)
  },
  transforLat(e, a) {
    var t = 2 * e - 100 + 3 * a + .2 * a * a + .1 * e * a + .2 * Math.sqrt(Math.abs(e));
    return t += 2 * (20 * Math.sin(6 * e * this.data.G.pi) + 20 * Math.sin(2 * e * this.data.G.pi)) / 3,
      t += 2 * (20 * Math.sin(a * this.data.G.pi) + 40 * Math.sin(a / 3 * this.data.G.pi)) / 3,
      t += 2 * (160 * Math.sin(a / 12 * this.data.G.pi) + 320 * Math.sin(a * this.data.G.pi / 30)) / 3
  },
  transforLng(e, a) {
    var t = 300 + e + 2 * a + .1 * e * e + .1 * e * a + .1 * Math.sqrt(Math.abs(e));
    return t += 2 * (20 * Math.sin(6 * e * this.data.G.pi) + 20 * Math.sin(2 * e * this.data.G.pi)) / 3,
      t += 2 * (20 * Math.sin(e * this.data.G.pi) + 40 * Math.sin(e / 3 * this.data.G.pi)) / 3,
      t += 2 * (150 * Math.sin(e / 12 * this.data.G.pi) + 300 * Math.sin(e / 30 * this.data.G.pi)) / 3
  },

  transfor2Mars(e, a) {
    if (this.isOutOfChina(e, a))
      return {
        Lat: e,
        Lng: a
      };
    var t = this.transforLat(a - 105, e - 35),
      r = this.transforLng(a - 105, e - 35),
      n = e / 180 * this.data.G.pi,
      o = Math.sin(n);
    o = 1 - this.data.G.ee * o * o;
    var s = Math.sqrt(o);
    return {
      Lat: e + (t = 180 * t / (this.data.G.a * (1 - this.data.G.ee) / (o * s) * this.data.G.pi)),
      Lng: a + (r = 180 * r / (this.data.G.a / s * Math.cos(n) * this.data.G.pi))
    }

  },
})

<view>
	<!-- 地图控件 -->
	<view>
		<map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="{{scale}}" markers="{{markers}}"
			bindmarkertap="markertap">
		</map>
	</view>
	<!-- 弹框 -->
	<view>
		<van-popup closeable bind:close="onClose" round custom-style="height: 30%" position="bottom" show="{{ showModal }}"
			bind:close="onClose">
			<view class="detailsBox">

				<view>
					<text>车牌号码 :</text>
					<text>{{modalData.vehNum}}</text>
				</view>
				<view>
					<text>所在位置:</text>
					<text>{{modalData.location}}</text>
					<view class="dh" bindtap="navigateToMap">地图导航
						
					</view>
					<image style="width:30px;height:30px;margin-top: 5px;position: absolute;"
							src="/static/img/map/daohang.png"></image>
				</view>


			</view>
		</van-popup>
	</view>
</view>
#map{
  width: 100%;
  height: 100vh;
}

.detailsBox{
  padding: 20rpx 20rpx 0rpx 28rpx;
  font-size: 28rpx;
}
.detailsBox view:nth-child(n+2){
  margin-top: 20rpx;
}
view{
  font-size: 18px;
}
.dh {
  display: inline-block;
  /* padding: 10px 20px; */
  color: rgb(76, 36, 255);
  font-size: 15px;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.3s ease;
  margin-left: 20px;
}

.dh:hover {
  background-color: #0056b3;
}



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

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

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

相关文章

  • 微信小程序使用高德地图获取当前定位

    1.在腾讯地图官网注册一个key(创建一个应用会自动生成一个key,详细步骤如图) 腾讯位置服务 - 立足生态,连接未来 注意点:开通webserviceAPI服务:控制台 -应用管理 - 我的应用 -添加key- 勾选WebServiceAPI - 保存 (小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需

    2024年02月06日
    浏览(64)
  • 微信小程序:简单实现地图导航功能实现

    里面的小图片需要自己找,真机调试时,点击导航即可进入地图,可导航,规划路线… 效果图 代码: wxml js wxss

    2024年02月11日
    浏览(66)
  • 微信小程序,高德地图

    高德开放平台: 注册账号(https://lbs.amap.com/) 去高德地图平台申请小程序应用的 key 应用管理(https://console.amap.com/dev/key/app) - 我的应用 - 创建新应用 生成的 key 即可用在程序中 下载相关 sdk 文件,导入 amap-wx.js 到项目中:https://lbs.amap.com/api/wx/download 创建 AMapWX 对象 api getRegeo 获取

    2024年02月09日
    浏览(59)
  • 微信小程序---高德地图(一)

    微信小程序调用高德API,实现高德地图地位功能。 入门指南-微信小程序插件|高德地图API (amap.com) 登录控制台 登录高德开发平台控制台(高德开放平台 | 高德地图API) ,进行注册登录。  创建新应用 进入应用管理,创建新应用。  创建Key 点开新应用,新应用中添加 key,服

    2024年02月05日
    浏览(89)
  • 微信小程序腾讯地图定位转高德地图定位

    微信小程序获取到了当前用户的定位,需要在高德地图上进行渲染。 发现正常渲染后,偏差几百米。 这里图方便,直接丢到window上了 这里演示“腾讯地图”转“高德地图”

    2024年01月25日
    浏览(95)
  • uniapp微信小程序获取当前位置信息、经纬度转换、导航地图实现

    1、调用接口,官网文档是这样写的 2、将经纬度转化为位置信息 需要开通腾讯位置服务,开发者每天有一万次的免费转化次数。开通地址  记住当前申请的key值,然后下载微信小程序JavaScriptSDK 然后安全域名设置,在小程序管理后台 - 开发 - 开发管理 - 开发设置 - “服务器域

    2024年02月11日
    浏览(69)
  • 微信小程序引入高德地图Demo 快速上手

    本文参照官方文档进行编写 最后引入官方实例 最终效果 ` 注册账号 https://lbs.amap.com/?ref=http%3A%2F%2Flbs.amap.com%2Fdev%2F#/ 获取Key教程 https://lbs.amap.com/api/wx/guide/create-project/get-key/ 访问网址 https://github.com/amap-demo/wx-regeo-poiaround-weather 下载微信小程序实例 用微信开发者工具打开 打开

    2024年02月11日
    浏览(79)
  • 微信小程序---- 外卖小程序查看实时地图路线(骑手端&用户端)【高德地图】

    前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html 2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download 3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key

    2024年02月16日
    浏览(61)
  • 【微信小程序】微信小程序集成高德卫星地图完成多边形绘制与截图保存

    目录 功能需求 使用的技术点 注意点 实现步骤 代码 微信小程序-地图所在的wxml 微信小程序-地图所在的js 微信小程序-展示截图结果的wxml 微信小程序-展示截图结果的js H5-地图所在的html 完成效果  参考文档 感谢阅读,欢迎讨论 打开页面展示卫星地图,用户自行在地图上绘制

    2024年02月06日
    浏览(199)
  • uniapp---- 微信小程序中获取当前地理位置(高德地图)

    1.在manifest.json中选择微信小程序配置,勾选上位置接口。 2.在manifest.json中选择源码视图,添加permission和requiredPrivateInfos 3.进入微信公众平台添加合法域名(不能少但是可以放在最后添加,调试期间可以打开开发者工具的不校验合法域名) 4.下载amap-wx.130.js,并且进行引用,

    2024年02月12日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包