微信小程序使用 map 组件实现拖动地图并获取当前地图中心的经纬度

微信小程序中,使用 map 组件可以轻松实现拖动地图并获取当前地图中心的经纬度。以下是实现步骤和代码示例:

实现思路

  1. 配置地图组件
    • 在小程序页面中添加 map 组件。
    • 设置地图的相关属性(如 enable-region-change 监听地图区域变化)。
  2. 监听地图拖动事件
    • 使用 bindregionchange 事件监听地图区域变化。
  3. 获取地图中心点的经纬度
    • 调用 MapContextgetCenterLocation 方法获取地图中心的经纬度。

代码实现

1. 页面 WXML

添加 map 组件并设置属性。

<view class="container">
  <map
    id="map"
    longitude="{{longitude}}"
    latitude="{{latitude}}"
    scale="14"
    enable-flex
    show-location
    bindregionchange="onRegionChange"
    style="width: 100%; height: 400px;"
  >
    <!-- 中心点标记 -->
    <image
      class="center-marker"
      src="/assets/marker.png"
      mode="widthFix"
    />
  </map>
  <view class="info">
    <text>经度: {{currentLongitude}}</text>
    <text>纬度: {{currentLatitude}}</text>
  </view>
</view>

2. 页面 WXSS

定义地图样式和中心点标记样式。

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.center-marker {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 30px;
  height: 30px;
  transform: translate(-50%, -50%);
}

.info {
  margin-top: 20px;
}

3. 页面 JS

初始化地图中心点的经纬度,并监听地图拖动。

Page({
  data: {
    latitude: 23.099994, // 初始纬度
    longitude: 113.324520, // 初始经度
    currentLatitude: 23.099994,
    currentLongitude: 113.324520,
  },

  onLoad() {
    // 获取用户当前位置信息
    wx.getLocation({
      type: 'gcj02',
      success: (res) => {
        this.setData({
          latitude: res.latitude,
          longitude: res.longitude,
          currentLatitude: res.latitude,
          currentLongitude: res.longitude,
        });
      },
      fail: (err) => {
        console.error('获取位置失败', err);
      },
    });
  },

  onRegionChange(e) {
    if (e.type === 'end') {
      // 拖动或缩放结束时获取中心点经纬度
      const mapCtx = wx.createMapContext('map');
      mapCtx.getCenterLocation({
        success: (res) => {
          this.setData({
            currentLatitude: res.latitude,
            currentLongitude: res.longitude,
          });
        },
        fail: (err) => {
          console.error('获取中心位置失败', err);
        },
      });
    }
  },
});

4. 中心点图标

将一个中心标记图标放置在地图中间。可以在小程序项目中放置一个 marker.png 文件,并通过 WXML 中的 image 标签实现。

功能说明

  1. 初始定位:在 onLoad 中使用 wx.getLocation 设置初始地图的经纬度。
  2. 拖动事件
    • bindregionchange 事件的回调参数中可以通过 e.type 判断是拖动或缩放。
    • 使用 getCenterLocation 方法获取当前中心点的经纬度。
  3. 动态显示中心点:通过拖动地图更新显示中心点经纬度。

效果图

  1. 打开小程序,地图初始化到用户当前的位置。
  2. 拖动地图时,中心点的经纬度会实时更新到页面上显示。

常见问题

  1. 地图组件层级问题
    • 如果地图被其他组件遮挡,可通过 z-index 调整层级。
  2. 中心点标记无法点击
    • 使用图片作为标记,而不是通过 markers 属性添加的标记。
  3. 用户未授权定位权限
    • 提示用户打开位置权限,并处理授权失败的场景。

通过以上方法,您可以实现微信小程序中地图拖动并动态获取经纬度的功能。

发布者:myrgd,转载请注明出处:https://www.object-c.cn/4539

Like (0)
Previous 2024年11月25日 下午7:30
Next 2024年11月25日 下午7:43

相关推荐

  • 在微信服务号中,通过设置自动回复,可以在新用户关注时引导其进入小程序

    在微信服务号中,通过设置自动回复,可以在新用户关注时引导其进入小程序。以下是实现的方法和建议: 1. 使用文本自动回复引导在服务号后台设置关注自动回复,可以通过一段欢迎语并附带小程序链接,引导用户点击进入。示例文案: 小程序链接格式: 设置路径:进入 微信公众平台 > 自动回复 > 关注后自动回复,添加以上文案。 2. 使用卡片自动回复引导你可以直接在自动回…

    2024年12月3日
    00
  • 理解 HTML、HTML5 和 “H5” 区别的重要性

    HTML & HTML5 & H5 的区别在构建现代网页时,理解 HTML、HTML5 和 “H5” 的区别是非常重要的。以下是它们的概念和主要区别: 1. HTML(超文本标记语言)定义HTML 是 HyperText Markup Language 的缩写,即超文本标记语言,用于定义网页内容的结构和含义。特性提供基…

    2024年12月2日
    00
  • 微信小程序RequestTask.onChunkReceived 监听分块数据接收事件接口

    在微信小程序中,RequestTask.onChunkReceived 是用于监听分块数据接收事件的接口。此功能适用于需要逐步接收大数据(例如流媒体、文件分块等)的场景,可以显著提升大文件传输的性能和用户体验。 以下是详细介绍和使用方法: 1. 功能说明用途:监听通过 wx.request 或 wx.downloadFile 发起的请求过程中,每次接收到的数…

    2024年11月28日
    00
  • 使用 HBuilderX 开发 uni-app 项目通过以下步骤实现微信小程序中获取用户头像、昵称、授权登录以及用户手机号

    在使用 HBuilderX 开发 uni-app 项目时,可以通过以下步骤实现微信小程序中获取用户头像、昵称、授权登录以及用户手机号。 1. 配置微信小程序的权限 在微信小程序后台中,确保已经启用了相关的功能模块,如: 同时在 app.json 中配置授权弹窗的提示: 2. 授权获取用户头像、昵称 从微信小程序 2.10.4 版本开始,推荐使用 wx.get…

    2024年12月11日
    00
  • 在微信公众号开发中获取 access_token 调用微信服务器端接口

    在微信公众号开发中,获取 access_token 是调用微信服务器端接口的第一步。access_token 是接口调用的凭据,可以通过微信公众号的接口调用。 以下是获取 access_token 的步骤和代码示例: 1. 获取 Access Token 的接口 调用微信服务器接口获取 access_token: 接口地址: 返回示例: access_tok…

    2024年12月3日
    00
  • 实现微信支付提现api接口教程

    微信支付的提现功能,通常是通过调用 企业付款到零钱 API 或 企业付款到银行卡 API 来实现的。以下是如何使用微信支付提现 API 的详细教程,包括其前置条件、接口调用以及注意事项。 1. 准备工作 1.1. 开通微信支付商户号 1.2. 配置证书 将这些文件保存在你的服务器上,用于发起 HTTPS 请求。 1.3. 获取 API 密钥 2. 企业付款到…

    2024年11月24日
    00
  • python反爬-图像验证码与滑块验证码的跳过反selenium检测,动态ip等问题

    针对反爬措施,Python可以使用以下策略来跳过图像验证码与滑块验证码、反检测Selenium,以及通过动态IP规避限制。这是一个分步说明: 1. 图像验证码的跳过与破解1.1 图像验证码处理对于简单的图像验证码,可以使用 OCR 技术直接识别验证码内容。常用库包括:Tesseract-OCR: 一款开源 OCR 工具。Pytesseract: Tesser…

    2024年11月28日
    00
  • 将 Unity 项目打包发布到微信小程序平台的方法

    将 Unity 项目打包发布到微信小程序平台需要用到 Unity 的 WeChat Mini Game SDK 和微信开发者工具。以下是详细的操作步骤: 1. 准备工作 1.1 安装工具 1.2 注册微信小程序账号 2. 项目设置 2.1 导入 SDK 2.2 配置 WebGL 设置 在 Unity 中完成 WebGL 平台配置: 2.3 添加 WeChat…

    2024年11月24日
    00
  • 使用uni-app微信小程序生成邀请码邀请好友注册

    在 uni-app 中实现微信小程序的邀请功能,可以通过生成邀请码来邀请好友注册。这个过程通常包括生成唯一的邀请码、分享链接生成二维码,以及接收邀请并使用邀请码完成注册等步骤。下面详细介绍如何在 uni-app 中实现这个功能。 1. 设计邀请码生成规则 首先,需要设计邀请码的生成规则。一般来说,邀请码是一个随机生成的字符串或者是与用户ID相关联的字符串。为…

    2024年11月23日
    00
  • 云服务器的 宝塔面板 中配置 PHP 支持 WebP 格式的图片

    在云服务器的 宝塔面板 中配置 PHP 支持 WebP 格式的图片,主要是通过安装或启用 GD 库或者 ImageMagick 来实现 WebP 图片的处理支持。下面是一步步的操作方法:1. 确保服务器已经安装 WebP 扩展WebP 格式的支持需要 PHP 依赖于 GD 库或 ImageMagick 库。如果你使用的是 PHP 7.0 及以上版本,通常 G…

    2024年11月29日
    00
  • 在 Nuxt.js 应用中,webpack 的 compile 事件钩子构建过程

    在 Nuxt.js 应用中,webpack 的 compile 事件钩子通常用于在构建过程中处理或监听 Webpack 编译的状态。webpack 是 Nuxt.js 中的核心构建工具之一,而 Nuxt.js 本身是基于 Webpack 配置的,允许你通过扩展 Webpack 配置来进行自定义。要使用 webpack 的 compile 事件钩子,首先你需要…

    2024年11月29日
    00
  • uni-app 一个使用 Vue.js 开发所有前端应用的框架跨端开发的优势

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信 / 支付宝 / 百度 / 头条 / QQ / 钉钉)等多个平台,其跨端开发具有以下优势: 开发效率高 跨平台兼容性好 性能优化 生态丰富 学习成本低

    2024年12月22日
    00
  • 使用 Webpack 5 优化构建减少生成文件的体积提升前端性能

    在使用 Webpack 5 时,优化构建以减少生成文件的体积是提升前端性能的重要一步。以下是一些常见的优化方法和策略: 1. 开启生产模式 确保构建时使用生产模式,Webpack 会自动应用多种优化(如代码压缩、Tree Shaking 等): 或在配置文件中明确设置: 2. 启用 Tree Shaking Tree Shaking 是 Webpack 内置…

    2024年12月3日
    00
  • 安装 Laravel 11 + Filament 详细教程

    安装Laravel 11之前选确保安装了Composer 管理器,接下来的步骤是通过Composer 包管理器安装完成的。 一、前提条件 二、使用 Composer 创建新的 Laravel 11 项目 三、在现有项目中添加 Laravel 11(如果是集成到现有项目) 请注意,在实际安装过程中,可能会遇到各种问题,如权限问题(在 Linux 下,如果没有足…

    2025年1月18日
    00
  • 使用 Python Selenium 控制 Chrome 浏览器 进行自动化操作

    使用 Python Selenium 控制 Chrome 浏览器 进行自动化操作是 Web 自动化测试和爬虫的常用方法之一。以下是一个完整的入门教程,包括如何安装、配置以及一些示例代码。 1. 安装所需环境 1.1 安装 Selenium 使用 pip 安装 Selenium: 1.2 下载 ChromeDriver 1.3 配置 ChromeDriver …

    2024年11月25日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信