用uniapp开发的微信小程序,如何使用开源地图组件leafletwx
发布于 2 年前 作者 zhujuan 670 次浏览 来自 分享
leafletwx是基于leaflet,使用微信原生组件开发的一套开源地图组件,目的是替换小程序内的原生map组件。

微信小程序原生组件项目开源地址:leatletwx
使用uniapp调用示例开源地址:unileaflet

说明:
1.最近有几个水友询问这个组件支不支持uniapp,我抽空试了下,发现是可以的,在这里分享下源码
2.本实例是使用uniapp调用leafletwx原生微信小程序组件,仅适用于微信小程序开发,组件部分并非使用uniapp开发
3.目前支持的地图功能演示都在QQ地图(/pages/qqmap)页面中


题外话:
1.现在很流行用uniapp开发微信小程序吗?
2.现在uniapp的跨平台能力咋样,坑多不多?


主要修改内容:

1.目录调整

  • 本示例中leafletwx组件目录从“components”移动到“wxcomponents”,即uniapp使用微信小程序原生组件的默认目录
  • 百度地图(/pages/bdmap)、QQ地图(/pages/qqmap)、手绘地图(/pages/mymap)依赖的js文件,移动到了"/static/lib"的对应目录中,js文件内引用leafletwx的目录做了响应更改

2.uniapp的pages.json,在pages[pageidx].sytle.usingComponents中引用leafletwx组件

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app",           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
			}
		},
		{
		    "path" : "pages/bdmap/bdmap",
		    "style" :                                                                                    
		    {
		        "navigationBarTitleText": "",
		        "enablePullDownRefresh": false,           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
		    }
		},
		{
            "path" : "pages/gdmap/gdmap",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
            }
        },
		{
		    "path" : "pages/mymap/mymap",
		    "style" :                                                                                    
		    {
		        "navigationBarTitleText": "",
		        "enablePullDownRefresh": false,           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
		    }
		},
		{
		    "path" : "pages/qqmap/qqmap",
		    "style" :                                                                                    
		    {
		        "navigationBarTitleText": "",
		        "enablePullDownRefresh": false,           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
		    }
		},
		{
            "path" : "pages/tdmap/tdmap",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,           
				"usingComponents": {
					"v-leaflet": "/wxcomponents/zhgeo/zhgeo-component"
				}
            }
        }
    ],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {}
}

3.页面中leafletwx组件dom的获取方式

// 在原生微信小程序中的获取组件方式
const container = this.selectComponent('#gd-leafletwx')
// 在uniapp中获取组件的方式
const container = this.$refs.myleafletwx

结果展示:

  • 百度地图

  • 高德地图

  • QQ地图

  • 天地图

  • 手绘地图

2 回复

您好,目前将手绘地图的代码迁移到新的的uniapp项目中运行不了,求帮助

请求支持mapbox地图吗

回到顶部