更新记录

1.3(2022-11-25)

1.定位适配优化 2.增加定位自身位置功能

1.2(2022-07-24)

初步发布版本,完善markdown文件


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 10.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


目录

一、ZkxUniMapBoxView简介
二、示例
三、传参对象和属性
四、方法
五、事件

下载demo,随便哪个都可以【demo中有天地图底图,其需要token,每天有限额的,我用的个人版,如果底图不出来,大概是超额了,等明天看】

1.下载使用Android Studio打包的demo
2.下载使用云打包的demo

项目示例demo

项目示例已上传,需要使用的时候,下载到本地,然后点击试用,即可直接用。

一、ZkxUniMapBoxView简介

ZkxUniMapBoxView,基于mapbox android sdk9.7.1版本,将mapbox一些常用的功能改造为了uniapp的插件。

用前必看

1.该插件仅支持Android端,iOS应该不会有了【因为我是搞Android的】,所以使用必须慎重!!!

2.mapbox和高德、百度的使用差异很大,里面涉及了source、layer、geojson、symbol、热力图、点线面圆、多点线面圆等多种要素,对地图知识要求较高,有mapbox使用经验者更适合

3.mapbox移动端sdk使用的是web墨卡托投影,坐标系是WGS84坐标系——不支持经纬度投影。

4.mapbox可以用来叠加天地图、mapbox家的地图、谷歌地图、自己发布的地图——但是不要叠加高德和百度的,因为根本不是一套坐标系。

5.天地图采用的是CGCS2000坐标系。——非高精度的大多数情况下,我们可以认为WGS84坐标系=CGCS2000坐标系,2000坐标系与WGS84坐标系偏差不大,因为CGCS2000坐标系与WGS84坐标系的原点、尺度、定向及定向演变的定义都是相同的,参考椭球的参数略有不同而已。相同的坐标点,在CGCS2000与WGS84下,经度是相同的,只在纬度上存有0.11mm上下的区别,可以忽略掉。

6.uni.requireNativeplugin()不需要,不需要,不需要,直接使用ZkxUniMapBoxView控件就可以

实现功能

1.常规地图操作,如添加底图、放大、缩小、定位、缩放到某个位置或者区域

2.批量绘制和移除单点、单线、单面、单圆类型,显示点击气泡

3.高阶操作,添加矢量mvt、栅格、geojson的数据源,叠加栅格、点线面圆图层【OGC标准,支持Multi的点线面】、热力图等图层

关于mapbox官网地图和token

1.插件主要设计给天地图等使用,因token问题,不支持直接使用mapbox官方的地图
2.如果明确需要使用mapbox的token和地图服务,请您在其官网自己申请token,然后使用Android studio在主应用模块的strings.xml文件中,加上uniapp_plugin_mapbox_token,写入token

二、示例,直接复制拿去用

地图控件

<ZkxUniMapBoxView ref="zkxMapBoxView" style="width: 100%;height: 500px;" @onError="onError"
            @onCameraMove="onCameraMove" @onMapLongClick="onMapLongClick" :mapOptions="{
            styleWebUrl:"【这里是用户自己写的style.json的url】",
            logoEnabled: true,
            tiltGesturesEnabled: true,
            rotateGesturesEnabled: true,
            isForbiddenAllGestures: false,
            defaultCameraPosition: {
                lat: 25.6555,
                lng: 110.545658,
                zoom: 12,
                isShowAnimation:false,
            },
            isShowUserLocation:true,
            isShowScaleBar:true}"></ZkxUniMapBoxView>

一些方法

1.设置地图style

this.$refs.zkxMapBoxView.jsSetMapStyleByJson(【这里是json字符串】);
this.$refs.zkxMapBoxView.jsSetMapStyleByWebUrl(【这里是一个webUrl】);

2.放大

this.$refs.zkxMapBoxView.jsZoomIn();        

3.缩放到某个范围

this.$refs.zkxMapBoxView.jsMoveCameraByBounds({
                    boundsCoordinates: [
                        [119.1045, 35.58764558],
                        [119.65464, 35.5464416],
                        [119.1464464, 35.546646]
                    ],
                    padding: 100,
                    isShowAnimation: true
                }); 

4.缩放到某个位置

myMapView.jsMoveCameraByPosition({
                            lat: 25.10467575,
                            lng: 156.9787325,
                            zoom: 1,
                            isShowAnimation: true
                        });

5.批量绘制点——icon-image使用图标比较特殊

                var myMapView = this.$refs.zkxMapBoxView;
                myMapView.jsDrawSymbolList([{
                    id: "symbol001",
                    title: "一号symbol",
                    objectData: "原生携带数据001",
                    lat: 39.908287806179985,
                    lng: 116.24736785888672,
                    "text-size": 15,
                    //天地图的字体是这个的
                    "text-font": ["WenQuanYi Micro Hei Mono"],
                    "text-field": "显示文字1",
                    "text-color": "#ff0000",
                    "text-halo-color": "#ffffff",
                    "text-halo-width": 1,
                    "text-offset": [0, 2],
                    "icon-image": iconImageIdAdvancedType111
                }, {
                    id: "symbol002",
                    title: "二号symbol",
                    objectData: {
                        "name": "小红",
                        "address": "北京"
                    },
                    lat: 39.908946186502526,
                    lng: 116.12686157226561,
                    "text-size": 15,
                    //天地图的字体是这个的
                    "text-font": ["WenQuanYi Micro Hei Mono"],
                    "text-field": "显示文字2",
                    "text-color": "#ff0000",
                    "text-halo-color": "#ffffff",
                    "text-halo-width": 1,
                    "text-offset": [0, 2],
                    "icon-image": iconWebImageId222
                }]);

6.显示点击气泡

                myMapView.jsShowMarkerView({
                    lat: 39.94869836991711,
                    lng: 116.18020462036133,
                    title: "测试标题",
                    data: [{
                        "label": "姓名",
                        "value": "小白"
                    }, {
                        "label": "地址",
                        "value": "天津市"
                    }]
                });

7.添加图标到地图style中——本地static的需要转base64,使用了image-tools插件


                var myMapView = this.$refs.zkxMapBoxView;

                /**
                 * 添加要使用的图片到地图style,最后用的时候用的是imageId的值
                 */
                //1.移除图片——这步在这里其实可以不写,因为地图style切换以后,以前的图片都会清空,这里只是保险写法和示例
                myMapView.jsRemoveImage(iconImageIdAdvancedType111);
                myMapView.jsRemoveImage(iconImageIdAdvancedType222);
                //2.本地图片,首先转base64
                pathToBase64(imagePointCommonObject)
                    .then(base64 => {
                        //然后添加图片
                        myMapView.jsAddImage({
                            imageId: iconImageIdAdvancedType111,
                            imageBase64: base64
                        });
                    })
                    .catch(error => {
                        console.error(error)
                    });
                //4.在线的图片
                myMapView.jsAddImage({
                    imageId: iconImageIdAdvancedType222,
                    imageWebUrl: "http://ipad.geo-compass.com/MobileAppPublish/CommonMapConfigFiles/ic_point_type2.png"
                });

8.根据geojson添加地图图层


                var myMapView = this.$refs.zkxMapBoxView;
                //1.首先移除全部的——先移除layer,然后移除source,防止不成功
                myMapView.jsRemoveLayer(geojsonSymbolLayerId);
                myMapView.jsRemoveLayer(geojsonLineLayerId);
                myMapView.jsRemoveLayer(geojsonFillLayerId);
                myMapView.jsRemoveSource(geojsonSourceId);

                //移除当前显示的markerView
                myMapView.jsRemoveMarkerView();

                //2.添加source——geojson可以用url,也可以用geoJsonData的字符串,都加会优先用url
                myMapView.jsAddSource({
                    "sourceId": geojsonSourceId,
                    //这里是小写
                    "type": "geojson",
                    //geojson的数据
                    "geoJsonData": this.featureCollectionGeoJsonText
                }, (result) => {
                    //回调——用不用回调无所谓,这里只是示范,addSource可以不用写结果回调,直接在下面添加layer
                    //回调——用不用回调无所谓,这里只是示范,addSource可以不用写结果回调,直接在下面添加layer
                    //回调——用不用回调无所谓,这里只是示范,addSource可以不用写结果回调,直接在下面添加layer
                    if (result.isSuccess) {
                        //成功了,添加layer
                        //3.文字标注
                        myMapView.jsAddLayer({
                            id: geojsonSymbolLayerId,
                            type: "symbol",
                            source: geojsonSourceId,
                            "text-field": "{name}",
                            //天地图的字体是这个的
                            "text-font": ["WenQuanYi Micro Hei Mono"],
                            "text-color": "#ff9900",
                            "text-halo-color": "#ffffff",
                            "text-halo-width": 4,
                            "text-size": 12
                        });
                        //4.线,注意位于文字标注下面
                        myMapView.jsAddLayer({
                            id: geojsonLineLayerId,
                            type: "line",
                            source: geojsonSourceId,
                            "line-color": "#ff0000",
                            "line-width": 4
                        }, geojsonSymbolLayerId);
                        //5.面,注意位于线标注下面【 面的边界不明显, 一般别用他】
                        myMapView.jsAddLayer({
                            id: geojsonFillLayerId,
                            type: "fill",
                            source: geojsonSourceId,
                            "fill-color": "#ff0000",
                            "fill-opacity": 0.2
                        }, geojsonLineLayerId);

                        //6.移动地图到某个坐标
                        myMapView.jsMoveCameraByPosition({
                            lat: 40.72470134336627,
                            lng: 109.40597789400323,
                            zoom: 5.5,
                            isShowAnimation: true
                        });

                        /**
                         * 添加点图层的点击事件
                         */
                        myMapView.jsSetToClickTargetLayerIds([geojsonFillLayerId]);
                    } else {
                        //失败了,打印日志
                        console.log(result.info)
                    }
                });

一些事件监听

1.onError——类似于错误日志,一般是传参出错捕获到异常以后方便查错的

            onError(e) {
                //一般是捕获到参数异常时候
                console.log(e.detail.errorMsg);
            },

2.onMapStyleLoaded——地图style加载完毕以后,切换style会清以前的图层

onMapStyleLoaded(e) {
                //由于切换style会清图层,这里可以重新添加图层
                console.log("style加载完毕以后");
                //提示信息
                modal.toast({
                    message: "style加载完毕回调了打印通知",
                    duration: 1.5
                });
            }

3.onMapUserLocationChanged/onMapClick/onMapLongClick——用户位置改变/地图点击/地图长按点击以后,返回的一样

onMapLongClick(e) {
                var lat = e.detail.lat;
                var lng = e.detail.lng;
                var showText = lng + "," + lat;
                modal.toast({
                    message: showText,
                    duration: 1.5
                });
            },

4.onLayerClick/onDrawAnnotationClick——自己绘制的点线面圆图层或地图要素点击以后

onLayerClick(e) {
                var myMapView = this.$refs.zkxMapBoxView;
                var feature = e.detail.feature;
                if (feature != null) {
                    myMapView.jsShowMarkerView({
                        lat: e.detail.lat,
                        lng: e.detail.lng,
                        "feature": feature
                    }, (e) => {
                        //点击以后
                        modal.toast({
                            message: "点击了markerView",
                            duration: 1.5
                        });
                    })
                }
            },

5.onMapStyleLoaded——地图加载新的style完毕以后

onMapStyleLoaded(e) {
    //由于切换style会清图层,这里建议做一些准备工作。例如图标重新加载——addImage
},

三、传参对象和属性【下面的类型是从java的写法写的,反正你懂了就可以】

0.mapOptions,控件中的地图配置,在ZkxUniMapBoxView中必须写

由于uniapp的生命周期问题,要求mapOptions属性必须写,才能正确初始化地图。mapOptions的属性值如下:

名称 描述 类型 是否必填
logoEnabled 是否显示logo boolean 否,默认false
tiltGesturesEnabled 手势,是否可以倾斜 boolean 否,默认false
rotateGesturesEnabled 手势,是否要旋转 boolean 否,默认false
isForbiddenAllGestures 禁止所有手势 boolean 否,默认false
mapMinZoom 最小级别 double 否,默认1
mapMaxZoom 最大级别 double 否,默认20
defaultCameraPosition 默认相机位置 Object,见CameraPosition 否,默认天安门的位置
isShowUserLocation 是否显示用户位置 boolean 否,默认false
isShowScaleBar 是否显示比例尺 boolean 否,默认false
styleJson 默认地图style的json字符串 String 二选一,建议填写,不填没有底图
styleWebUrl 默认地图style的url String 二选一,建议填写,不填没有底图

1.ResultCallback,结果回调,注意这个不是传参。一些方法为了方便用户查错,增加了可传可不传的结果回调

名称 描述 类型 其他
isSuccess 是否成功 boolean 注意使用,e.isSuccess
info 错误信息 String 注意使用,e.info

2.CameraPosition,指定位置

名称 描述 类型 是否必填
lat 纬度 double
lng 经度 double
zoom 级别,建议1-22 double
isShowAnimation 是否显示动画 boolean 否,默认false

3.CameraBounds,指定范围

名称 描述 类型 是否必填
boundsCoordinates 边界的二维坐标数组,经度在前,纬度在后 double[][] 是,例如[[103.55,1.33],[103.11,1.22],[103.51,2.66]]
padding 距离四边的距离,单位在android是dp double
isShowAnimation 是否显示动画 boolean 否,默认false

4.MarkerViewInfo,显示信息的气泡

名称 描述 类型 是否必填
lat 显示位置的,纬度 double
lng 显示位置的,经度 double
title 显示标题 String
data 自定义显示的内容 json数组 否,二选一,【不知道在PC端叫他对象数组还是json数组】。举例——[{"label":"姓名","value":"小白"},{"label":"地址","value":"天津市"}]
feature feature对象,展示属性,建议点击用 Object,见Feature 否,二选一,一般在onLayerClickonDrawAnnotationClick的事件中拿到这个对象,直接使用即可

5.Feature,这个是mapbox自己的类型,存储图形的属性和图形,知道下面的两个属性就够用了

名称 描述 类型
geometry 图形数据,Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon等 Object
properties 属性信息 Object

6.ImageIcon,点的图标,使用前需要先加载到地图,支持本地static的和在线

名称 描述 类型 是否必填
imageId 图标ID,加载到地图后,使用的时候用的都是这个ID String
imageBase64 本地的图标,转成了base64传过来的,不要传过大的图片,建议小图标 String 二选一,必须有一个
imageWebUrl 在线的图标的url String 二选一,必须有一个

7.DrawSymbol,绘制点标注

名称 描述 类型 是否必填
id 唯一标识ID String 是,会原封不到的放到Feature的properties里面返回
title 显示marker标题 String 否,会原封不到的放到Feature的properties里面返回
objectData 携带数据 任意类型 否,会原封不到的放到Feature的properties里面返回
lat 纬度 double
lng 经度 double
text-field 显示文字 String 否,需要文字就必须加上
text-font 字体 String[] 否,需要文字就必须加上,字体库必须对应,例如天地图的是["WenQuanYi Micro Hei Mono"]
text-size 文字大小 double
text-rotate 文字旋转角度 double
text-offset 文字x轴y轴偏移 double[] 否,偏移中心的百分比,例如[0,2f],x轴不偏移,y轴向下偏移2个单位
text-color 文字颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
text-halo-color 光晕颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
text-halo-width 光晕宽度 double
icon-image 图标ID String 否,需要图标就必须加上
icon-anchor 图标位置 String 否,默认居中,只支持这九个值【center、left、right、top、bottom、top-left、top-right、bottom-left、bottom-right】
icon-size 图标大小百分比 double 否,百分比,值范围值0-1
icon-rotate 图标旋转角度 double

8.DrawLine,绘制线【不支持虚线】

名称 描述 类型 是否必填
id 唯一标识ID String 是,会原封不到的放到Feature的properties里面返回
title 显示marker标题 String 否,会原封不到的放到Feature的properties里面返回
objectData 携带数据 任意类型 否,会原封不到的放到Feature的properties里面返回
lineCoordinates 线的二维坐标数组,经度在前,纬度在后 double[][] 是,例如[[103.55,1.33],[103.11,1.22],[103.51,2.66]],至少两个点才能绘制出线的效果
line-color 线的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
line-width 线的宽度 double

9.DrawFill,绘制面,这里是单面,单面,单面

名称 描述 类型 是否必填
id 唯一标识ID String 是,会原封不到的放到Feature的properties里面返回
title 显示marker标题 String 否,会原封不到的放到Feature的properties里面返回
objectData 携带数据 任意类型 否,会原封不到的放到Feature的properties里面返回
fillCoordinates 面的三维坐标数组,经度在前,纬度在后 double[][][] 是,例如[[[103.55,1.33],[103.11,1.22],[103.51,2.66],[103.55,1.33]]],至少三个点才能绘制出面的效果,此外标准面一般是闭合的,即首尾坐标相同
fill-color 面的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
fill-opacity 面的透明度百分比 double 否,百分比的,值范围值0-1
fill-outline-color 面的边线颜色 String 否,主要支持#ff0000这种颜色值,其他的不建——这个边界线不是很明显

10.DrawCircle,绘制圆

名称 描述 类型 是否必填
id 唯一标识ID String 是,会原封不到的放到Feature的properties里面返回
title 显示marker标题 String 否,会原封不到的放到Feature的properties里面返回
objectData 携带数据 任意类型 否,会原封不到的放到Feature的properties里面返回
lat 圆心的纬度 double
lng 圆心的经度 double
circle-color 圆的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
circle-opacity 圆的透明度百分比 double 否,百分比的,值范围值0-1
circle-radius 圆的半径 double
circle-stroke-color 圆的边界线颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
circle-stroke-opacity 圆的边界线的透明度 double 否,百分比的,值范围值0-1
circle-stroke-width 圆的边界线宽度 double
#下面,就是进阶用法
#下面,就是进阶用法
#下面,就是进阶用法
#用法:【有图标需要就先addImage】首先removeLayer,然后removeSource,之后addSource,最后addLayer,一般这样写就不会出错

11.Source,地图数据源,支持vector、geojson、raster三大类

名称 描述 类型 是否必填
sourceId 数据源ID String
type 数据类型 String 是,【vector、geojson、raster】三个值的任意一种
url 数据源的url String 否,三种数据都支持的,优先级最高
geoJsonData 传标准地图json String 否,只有geojson类型会使用,一般FeatureCollection/Feature/各种点线面的geometry的json,都支持
tiles 数据源的url字符串数组,带x/y/z的 String[] 否,vector、raster可能会用
tileSize 瓦片大小 int 否,raster用的,可不传,一般是256或者512

12.Layer,图层,简单方式添加,支持raster、symbol、circle、line、fill、heatmap

名称 描述 类型 是否必填
id 图层ID String
type 图层类型 String 是,【raster、symbol、circle、line、fill、heatmap】任意一种
source 数据源ID,和上面对应 String 是,
source-layer 理解为区分标志,如mvt会用它 String 否,如果会用就用,不会用看看官网把
maxzoom 图层显示最大级别 double
minzoom 图层显示最小级别 double
filter Expression表达式筛选 json数组 否,会用就用,建议看下大佬的博客MapboxMap之Expression
symbol
text-field 显示文字 String 否,需要文字就必须加上
text-font 字体 String[] 否,需要文字就必须加上,字体库必须对应,例如天地图的是["WenQuanYi Micro Hei Mono"]
text-size 文字大小 double
text-rotate 文字旋转角度 double
text-offset 文字x轴y轴偏移 double[] 否,偏移中心的百分比,例如[0,2f],x轴不偏移,y轴向下偏移2个单位
text-color 文字颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
text-halo-color 光晕颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
text-halo-width 光晕宽度 double
text-allow-overlap 文字是否允许重叠 boolean 否,默认false,自动避让的【区分上面的绘制点,这个能开启避让】
icon-image 图标ID String 否,需要图标就必须加上
icon-anchor 图标位置 String 否,默认居中,只支持这九个值【center、left、right、top、bottom、top-left、top-right、bottom-left、bottom-right】
icon-size 图标大小百分比 double 否,百分比,值范围值0-1
icon-rotate 图标旋转角度 double
icon-allow-overlap 图标是否允许重叠 boolean 否,默认false,自动避让的【区分上面的绘制点,这个能开启避让】
line
line-color 线的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
line-width 线的宽度 double
line-dasharray 虚线的二维数组 double[] 否,不好把控,貌似是虚线宽度和间距的数组,如[8f,4f],自己试试去【区分上面的绘制线,这个能使用虚线】
fill
fill-color 面的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
fill-opacity 面的透明度百分比 double 否,百分比的,值范围值0-1
fill-outline-color 面的边线颜色 String 否,主要支持#ff0000这种颜色值,其他的不建——这个边界线不是很明显
circle
circle-color 圆的颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
circle-opacity 圆的透明度百分比 double 否,百分比的,值范围值0-1
circle-radius 圆的半径 double
circle-stroke-color 圆的边界线颜色 String 否,主要支持#ff0000这种颜色值,其他的不建议
circle-stroke-opacity 圆的边界线的透明度 double 否,百分比的,值范围值0-1
circle-stroke-width 圆的边界线宽度 double
raster不需要,heatmap担心你把持不住有默认的,这俩都别传属性了,或者在LayerAdvanced在用

13.LayerAdvanced,图层高阶写法,支持Expression表达式,建议pc端的直接复制过来layout/paint改巴改巴之类的,支持raster、symbol、circle、line、fill、heatmap

名称 描述 类型 是否必填
id 图层ID String
type 图层类型 String 是,【raster、symbol、circle、line、fill、heatmap】任意一种
source 数据源ID,和上面对应 String 是,
source-layer 理解为区分标志,如mvt会用它 String 否,如果会用就用,不会用看看官网把
maxzoom 图层显示最大级别 double
minzoom 图层显示最小级别 double
filter Expression表达式筛选 json数组 否,会用就用,建议看下大佬的博客MapboxMap之Expression
layout layout属性,建议PC复制 Object
paint paint属性,建议PC复制 Object

四、方法【函数?随便叫】

名称 描述 传参类型
jsZoomIn 放大一级
jsZoomOut 缩小一级
jsMoveCameraByPosition 移动地图到某个位置 CameraPosition
jsMoveCameraByBounds 移动地图到某个范围 CameraBounds
jsSetMapStyleByWebUrl 设置style,通过url String
jsSetMapStyleByJson 设置style,通过json字符串 String
jsShowUserLocation 显示用户位置,需要GPS权限
jsHideUserLocation 隐藏用户位置
jsResetNorth 重置地图方向
jsLocateMyLocation 定位自身位置 ResultJsCallback【回调可不传,忘了怎么超链接了,看其他的】
jsAddImage 添加图标到地图 ImageIcon,ResultJsCallback【回调可不传】
jsRemoveImage 通过ID,移除图标 String
jsAddSource 添加地图数据源 Source,ResultJsCallback【回调可不传】
jsRemoveSource 通过ID移除source String
jsAddLayer 简单方式,添加图层 Layer,String【可不传,位于某个图层下面的该图层id,mapbox的addLayerBelow()】,ResultJsCallback【可不传】
jsAddLayerAdvanced 高阶方式,添加图层,mapbox的pc端的复制过来就能用 LayerAdvanced,String【可不传,位于某个图层下面的该图层id,相当于mapbox的addLayerBelow()】,ResultJsCallback【可不传】
jsRemoveLayer 通过ID移除图层 String
jsShowMarkerView 显示点击气泡,只显示一个 MarkerViewInfo,UniJSCallback【可不传,这个是气泡点击的回调,和上面的不一样,没有携带东西】
jsRemoveMarkerView 移除此时显示的气泡
jsSetToClickTargetLayerIds 设置要点击的目标图层ID们,传参是ID字符串数组,之后可以在onLayerClick拿到结果 String[]
jsDrawSymbol 绘制点标注 DrawSymbol,ResultJsCallback【可不传】
jsDrawSymbolList 批量绘制点标注 DrawSymbol[](数组),ResultJsCallback【可不传】
jsRemoveSymbolById 通过ID移除单个点 String
jsRemoveSymbolByIdList 通过ID数组移除多个点 String[]
jsRemoveAllSymbol 移除全部的点
jsDrawLine 绘制线标注 DrawLine,ResultJsCallback【可不传】
jsDrawLineList 批量绘制线标注 DrawLine[](数组),ResultJsCallback【可不传】
jsRemoveLineById 通过ID移除单个线 String
jsRemoveLineByIdList 通过ID数组移除多个线 String[]
jsRemoveAllLine 移除全部的线
jsDrawFill 绘制面标注 DrawFill,ResultJsCallback【可不传】
jsDrawFillList 批量绘制面标注 DrawFill[](数组),ResultJsCallback【可不传】
jsRemoveFillById 通过ID移除单个面 String
jsRemoveFillByIdList 通过ID数组移除多个面 String[]
jsRemoveAllFill 移除全部的面
jsDrawCircle 绘制圆标注 DrawCircle,ResultJsCallback【可不传】
jsDrawCircleList 批量绘制圆标注 DrawCircle[](数组),ResultJsCallback【可不传】
jsRemoveCircleById 通过ID移除单个圆 String
jsRemoveCircleByIdList 通过ID数组移除多个圆 String[]
jsRemoveAllCircle 移除全部的圆

五、事件

名称 描述 参数 使用
onError 发生错误,一般是传参出错 {errorMsg:"错误信息"} e.detail.errorMsg
onCameraMove 地图改变以后【为啥我要多套一层?】 {cameraPosition:{lat:39.4,lng:100.1,zoom:13.5,bearing:0,tilt:0}} e.detail.cameraPosition.lat
onMapClick 地图点击以后 {lat:10.4,lng:38.1} e.detail.lat
onMapLongClick 地图长按点击以后 {lat:10.4,lng:38.1} e.detail.lat
onMapUserLocationChanged 用户位置改变以后 {lat:10.4,lng:38.1} e.detail.lat
onMapStyleLoaded 地图style加载完毕以后 {lat:10.4,lng:38.1} e.detail.lat
onLayerClick 图层点击以后 {lat:10.4,lng:38.1,feature:Feature} e.detail.feature.properties
onDrawAnnotationClick 绘制的点线面圆点击以后 {lat:10.4,lng:38.1,type:"symbol",feature:Feature} e.detail.type【type的值是symbol、circle、line、fill四种任意一个,因为是用户自己画的】

隐私、权限声明

1. 本插件需要申请的系统权限列表:

1.联网权限 2.获取当前地理位置权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

1.插件不采集任何数据 2.插件使用Mapbox SDK可能会采集数据,详情参考:https://www.mapbox.com/legal/privacy,或者 https://docs.mapbox.com/help/glossary/telemetry/ 3.插件遵循mapbox的开源协议,未修改其核心源码,主要是把MapView和部分方法改造为uniapp能用插件,mapbox协议见:https://github.com/mapbox/mapbox-maps-android/blob/main/LICENSE.md

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问