微信小程序实例:map组件markers属性动态初始化

        今天在写小程序详情页时候遇到一个问题,map组件的markers属性是通过异步请求到数据后设置的,结果就导致了微信底层渲染出错。但是如果我先在data初始化markers变量,每次小程序都不能正常渲染都是初始化的北京的数据。然后写了如下测试:

test.js::

Page({
  data:{
    map:{
      lat: 0,
      lng: 0,
      markers: [],
      hasMarkers: false//解决方案
    }
  },
  onLoad: function(options){
    var that=this;
    wx.getLocation({
      type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
      success: function (res) {
        // success
        wx.request({
          url: 'https://xxx.com/detail.htm?vid=3&latlng=' + res.latitude + ',' + res.longitude,
          data: {},
          method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
          // header: {}, // 设置请求的 header
          success: function (res) {
            // success
            that.setData({
              'map.lat': res.data.data.lat,
              'map.lng': res.data.data.lng,
              'map.markers': [{
    
### 微信小程序 `map` 组件中添加 `markers` 的方法 在微信小程序的 `map` 组件中,可以通过设置 `markers` 属性来实现在地图上添加标记点。此属性接受一个数组作为参数,每个对象代表一个标记点,并可以配置其位置、图标样式以及其他交互行为。 #### 配置 `markers` 为了向地图添加多个标记点,需定义一个包含各标记详情的对象数组: ```json { "type": "object", "properties": { "latitude": { "type": "number", "description": "纬度" }, "longitude": { "type": "number", "description": "经度" }, "iconPath": { "type": "string", "description": "图标路径" }, "width": { "type": "integer", "description": "宽度(px)" }, "height": { "type": "integer", "description": "高度(px)" } } } ``` 这些字段允许自定义每一个标记的位置及其外观[^1]。 #### 示例代码 下面是一段完整的 JSON 数据结构以及对应的 WXML 和 JS 文件片段,展示了如何创建并渲染带有两个不同地点标记的地图实例: WXML 文件: ```xml <view class="container"> <map id="myMap" style="width: 100%; height: 300px;" :markers="markers"></map> </view> ``` JS 文件初始化数据部分: ```javascript Page({ data: { markers: [ { latitude: 23.099994, longitude: 113.324520, iconPath: '/images/location.png', width: 30, height: 30 }, { latitude: 23.199994, longitude: 113.274520, iconPath: '/images/shop.png', width: 30, height: 30 }] } }) ``` 上述代码实现了在一个页面加载完成后自动显示一张具有指定坐标的地图,并在其上面放置了两个不同的标记点,分别对应于广州塔和天河城商场附近的位置[^2]。 #### 进一步优化与扩展 除了基本的坐标设定外,还可以利用其他可选参数进一步增强用户体验,比如点击事件处理函数等特性。这使得开发者能够构建更加复杂的应用程序逻辑,如响应用户的互动或者提供更多信息给用户查看。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值