uniapp-Map地图之打标点与使用

在uniapp开发中,会涉及到定位方面的需求,比如查询用户附近的门店,在餐饮与外卖应用中广泛存在,今天就来记录一下uniapp中map组件的使用与打标点

1.初始化map

    <map
      id="map"
      :latitude="latitude"
      :longitude="longitude"
      :scale="13"
      :markers="markers"
      :show-location="true"
      style="width: 100%; height: 400rpx"
      >
    </map>

latitude/longitude为用户当前所在定位,用来标记用户当前地理位置,如图

scale为地图缩放比例,值越大地图越详细

markers为标点集合

具体说明见官方文档map | uni-app-x

2.打标点

注意:id只能唯一,若重复会出现标点不全或只显示一个等问题

 iconPath为自定义标点图标,只能是相对路径/static这种模式,不能是绝对路径../static

      // 将门店数据转换为 markers 数组
        this.markers = rel.data.map((store) => ({
          id: store.storeCode, // 确保 id 是数字
          latitude: parseFloat(store.lat), // 确保 latitude 是数字
          longitude: parseFloat(store.lng), // 确保 longitude 是数字
          title: store.name,
          iconPath: "/static/orderingMeals/location.png",
          width: 30,
          height: 30,
        }));

### 实现 UniApp 中腾讯地图点击标点事件 在 UniApp 开发环境中,通过集成腾讯地图 SDK 可以轻松实现地图上的标点功能,并为其绑定点击事件。以下是关于如何实现这一功能的具体说明: #### 1. 地图初始化标点创建 在使用腾讯地图之前,需先完成地图组件的初始化工作。可以通过 `map` 组件加载地图,并利用腾讯地图 API 创建标点。具体来说,在页面配置文件中引入 `map` 组件后,可以在 JavaScript 文件中调用腾讯地图的相关方法来设置标点。 ```html <template> <view> <!-- 使用 map 组件 --> <map id="myMap" :latitude="latitude" :longitude="longitude" scale="14"> <cover-view v-for="(marker, index) in markers" :key="index" class="marker"> <cover-image @click="handleMarkerClick(marker)" :src="marker.iconPath" mode="aspectFit"></cover-image> </cover-view> </map> </view> </template> <script> export default { data() { return { latitude: 39.9087, longitude: 116.3975, markers: [ { iconPath: '/static/marker.png', id: 'm1' }, { iconPath: '/static/marker2.png', id: 'm2' } ] }; }, methods: { handleMarkerClick(marker) { console.log('Clicked marker:', marker.id); this.showInfoWindow(marker); // 显示信息窗体逻辑 }, showInfoWindow(marker) { uni.showToast({ title: `You clicked on ${marker.id}`, icon: 'none' }); } } }; </script> ``` 上述代码展示了如何在地图上放置多个标点,并为每个标点绑定点击事件[^1]。 #### 2. 处理标点点击事件 当用户点击某个标点时,触发对应的回调函数处理业务逻辑。通常情况下,开发者会希望显示一个信息窗体或者跳转到详情页等功能。这一步骤的关键在于监听用户的交互动作并作出响应。 对于更复杂的需求,例如动态更新信息窗体中的内容,则需要额外编写数据渲染逻辑以及绑定更多事件处理器。例如,可以借助 Vue 的双向绑定机制实时修改 DOM 结构,从而达到动态调整界面的效果[^3]。 #### 3. 自定义标点样式行为扩展 除了基本的地图标注外,还可以进一步定制化这些标记的表现形式及其交互方式。比如更换默认图标、改变大小颜色等属性;亦或是增加动画效果让用户体验更加友好。所有这一切都可以基于腾讯地图提供的丰富接口去完成[^2]。 #### 注意事项 - 确保已正确申请腾讯地图 Key 并将其填入项目配置当中。 - 如果涉及到跨平台兼容性问题,请测试不同终端设备下的表现差异。 ```javascript // 示例:获取当前地理位置 wx.getLocation({ type: 'gcj02', success(res) { const latitude = res.latitude; const longitude = res.longitude; console.log(`Current Location(${latitude}, ${longitude})`); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值