uni-app地图在subnvue页面使用方法不生效

uni-app地图在subnvue页面使用方法不生效

测试过的手机:

红米note3,苹果8plus

操作步骤:

  • 将nvue挂载在vue的子窗体下地图方法失效

预期结果:

mapContext.addMarkers({  
    markers,  
    clear: false,  
    complete(res) {  
        console.log('addMarkers', res)  
    },  
    fail(err) {  
        console.error(err)  
    }  
})
  • addMarkers方法生效,地图标注可以动态添加

实际结果:

  • addMarkers方法不生效,地图标注不可以动态添加

bug描述:

nvue页面使用subnvue方式展现,但是地图的方法不生效

this._mapContext = uni.createMapContext("map", this);  

// 仅调用初始化,才会触发 on.("markerClusterCreate", (e) => {})    
this._mapContext.initMarkerCluster({  
    enableDefaultStyle: false,  
    zoomOnClick: true,  
    gridSize: 60,  
    complete(res) {  
        console.log('initMarkerCluster', res)  
    }  
});  

this._mapContext.on("markerClusterCreate", (e) => {  
    console.log("markerClusterCreate", e);  
});  

{  
    "path": "pages/sys/indexMap/index",  
    "style": {  
        "navigationBarTitleText": "首页",  
        "navigationStyle": "custom" ,// 隐藏系统导航栏  
        "enablePullDownRefresh":true,  
        "app-plus": {  
            "titleNView": false, //禁用原生导航栏  
            "subNVues": [  
                { //地图  
                    "id": "map", //subNVue 的 id,可通过 uni.getSubNVueById('drawer') 获取  
                    "path": "pages/sys/indexMap/subNVue/map", // nvue 路径  
                    // "type": "popup",  
                    "style": { //webview style 子集,文档可暂时开放出来位置,大小相关配置  
                        "position": "static",  
                        "bottom":"0",  
                        "right":"0",  
                        "dock":"top",  
                        "width": "100%",  
                        "height": "100%",  
                        "background": "transparent",  
                        "zindex":-1  
                    }  
                }  
            ]  
        }  
    }  
}
  • 放在vue页面或者不是挂载在vue子窗体下是生效的

更多关于uni-app地图在subnvue页面使用方法不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

请提供简单可复现的完整示例(上传附件),方便我们快速排查问题哦。 【bug优先处理规则】https://ask.dcloud.net.cn/article/38139

更多关于uni-app地图在subnvue页面使用方法不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用 subNVue 页面时,地图组件(如 map)可能会出现不生效的情况。这通常是由于 subNVue 页面的渲染机制与普通页面的渲染机制不同所导致的。以下是一些可能的原因和解决方法:

1. 确保 subNVue 页面配置正确

pages.json 中,确保 subNVue 页面的配置正确。例如:

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "subNVue": {
          "path": "pages/subnvue/map",
          "style": {
            "position": "absolute",
            "width": "100%",
            "height": "100%",
            "background": "transparent"
          }
        }
      }
    }
  ]
}

2. 确保地图组件在 subNVue 页面中正确使用

subNVue 页面中,确保地图组件的使用方式正确。例如:

<template>
  <view>
    <map
      id="map"
      :latitude="latitude"
      :longitude="longitude"
      :markers="markers"
      style="width: 100%; height: 100%;"
    ></map>
  </view>
</template>

<script>
export default {
  data() {
    return {
      latitude: 39.909,
      longitude: 116.39742,
      markers: [
        {
          id: 1,
          latitude: 39.909,
          longitude: 116.39742,
          name: '北京'
        }
      ]
    };
  }
};
</script>

3. 检查 subNVue 页面的生命周期

subNVue 页面的生命周期与普通页面有所不同,确保在 subNVue 页面的 onLoadonReady 生命周期中初始化地图组件。

4. 检查 subNVue 页面的样式

确保 subNVue 页面的样式设置正确,特别是 widthheight,以确保地图组件能够正确显示。

5. 使用 nvue 页面代替 subNVue

如果 subNVue 页面中的地图组件仍然无法正常工作,可以尝试使用 nvue 页面代替 subNVue 页面。nvue 页面使用原生渲染,可能对地图组件的支持更好。

6. 检查 uni-app 版本

确保使用的 uni-app 版本是最新的,因为旧版本可能存在一些已知的 bug 或问题。

7. 使用原生地图组件

如果以上方法都无法解决问题,可以考虑使用原生地图组件(如高德地图或百度地图的 SDK)来实现地图功能。

8. 调试和日志

在开发过程中,使用 console.loguni.showToast 等方法输出调试信息,检查是否有错误或异常信息。

示例代码

以下是一个简单的 subNVue 页面中使用地图组件的示例:

<template>
  <view>
    <map
      id="map"
      :latitude="latitude"
      :longitude="longitude"
      :markers="markers"
      style="width: 100%; height: 100%;"
    ></map>
  </view>
</template>

<script>
export default {
  data() {
    return {
      latitude: 39.909,
      longitude: 116.39742,
      markers: [
        {
          id: 1,
          latitude: 39.909,
          longitude: 116.39742,
          name: '北京'
        }
      ]
    };
  },
  onLoad() {
    console.log('subNVue map page loaded');
  }
};
</script>
回到顶部