codecamp

百度智能小程序 地图

map 地图

解释:地图,客户端创建的 原生组件,使用时请注意相关限制。

属性说明

属性名 类型 默认值 必填 说明 最低版本 Web 态说明
longitude Number gcj02 坐标系中心经度 - -
latitude Number gcj02 坐标系中心纬度 - -
scale Number 16 缩放级别,取值范围为 4-21 。 - -
markers Array.<marker> 标记点 - -
polyline Array.<polyline> 路线 - -
polygons Array.<polygon> 多边形(工具暂不支持) 2.0.13
低版本请做兼容性处理
-
circles Array.<circle> - -
controls Array.<control> 控件 - -
include-points Array.<point> 缩放视野以包含所有给定的坐标点 - -
show-location Boolean false 显示带有方向的当前定位点 - 暂时不能显示方向
enable-3D Boolean false 显示 3D 楼块(工具暂不支持) 2.0.13
低版本请做兼容性处理
暂不支持
show-compass Boolean false 显示指南针(工具暂不支持) 2.0.13
低版本请做兼容性处理
暂不支持
enable-overlooking Boolean false 开启俯视(工具暂不支持) 2.0.13
低版本请做兼容性处理
暂不支持
enable-zoom Boolean true 是否支持缩放(工具暂不支持) 2.0.13
低版本请做兼容性处理
-
enable-scroll Boolean true 是否支持拖动(工具暂不支持) 2.0.13
低版本请做兼容性处理
-
enable-rotate Boolean false 是否支持旋转(工具暂不支持) 2.0.13
低版本请做兼容性处理
暂不支持
bindmarkertap EventHandle 点击标记点时触发 - -
bindcallouttap EventHandle 点击标记点对应的气泡时触发 - -
bindcontroltap EventHandle 点击控件时触发 - -
bindregionchange EventHandle 视野发生变化时触发 - -
bindtap EventHandle 点击地图时触发 - -
bindupdated EventHandle 在地图渲染更新完成时触发 - -
bindpoitap EventHandle 点击地图 poi 点时触发 -暂不支持

示例 

在开发者工具中打开


代码示例

<view class="wrap">
    <view class="card-area">
        <map class="map"
            longitude="{{longitude}}"
            latitude="{{latitude}}"
            scale="{{scale}}"
            markers="{{markers}}"
            polyline="{{polyline}}"
            polygons="{{drawPolygon ? polygons : []}}"
            circles="{{circles}}"
            controls="{{controls}}"
            show-location="{{showLocation}}"
            include-points="{{includePoints}}"
            enable-3D="{{enable3d}}"
            show-compass="{{showCompass}}"
            enable-overlooking="{{enableOverlooking}}"
            enable-zoom="{{enableZoom}}"
            enable-scroll="{{enableScroll}}"
            enable-rotate="{{enableRotate}}"
            bindmarkertap="onMarkertap" 
            bindcallouttap="onCallouttap" 
            bindcontroltap="onControltap" 
            bindregionchange="onRegionchange" 
            bindtap="onTap" 
            bindupdated="onUpdated"
            bindpoitap="onPoitap">
        </map>
        <view class="item-scroll block border-bottom">
            <text class="switch-text">支持缩放</text>
            <switch bindchange="toggleZoom" checked></switch>
        </view>
        <view class="item-scroll block border-bottom">
            <text class="switch-text">支持拖动</text>
            <switch bindchange="toggleScroll" checked></switch>
        </view>
        <view class="item-scroll block border-bottom" s-if="{{!isWeb}}">
            <text class="switch-text">支持旋转</text>
            <switch bindchange="toggleRotate" checked></switch>
        </view>
    </view>
    <view class="tip-week">工具暂不支持手势控制</view>
</view>
Page({
    data: {
        latitude: '40.048828',
        longitude: '116.280412',
        scale: 16,
        polygons: [],
        drawPolygon: false,
        includePoints: [],
        showLocation: true,
        enable3d: false,
        showCompass: false,
        enableOverlooking: false,
        enableZoom: true,
        enableScroll: true,
        enableRotate: true,
        markers: [{
            markerId: '1',
            latitude: '40.052751',
            longitude: '116.278796'
        }, {
            markerId: '2',
            latitude: '40.048828',
            longitude: '116.280412',
            callout: {
                display: 'ALWAYS',
                content: '百度科技园'
            }
        }, {
            markerId: '3',
            latitude: '40.049655',
            longitude: '116.27505',
            callout: {
                display: 'ALWAYS',
                content: '西山壹号院'
            }
        }],
        polyline: [{
            points: [{
                longitude: 116.278796,
                latitude: 40.048828
            }, {
                longitude: 116.27505,
                latitude: 40.049655
            }],
            color: '#FF5F41FF',
            width: 2,
            dottedLine: true
        }],
        controls: [{
            controlId: 1,
            iconPath: 'https://b.bdstatic.com/searchbox/icms/searchbox/img/api_logo.png',
            position: {
                left: 0,
                top: 100,
                width: 50,
                height: 50
            },
            clickable: true
        }],
        circles: [{
            latitude: '40.052751',
            longitude: '116.278796',
            color: '#FF5F41FF',
            fillColor: '#21FFFFFF',
            radius: '200',
            strokeWidth: '2'
        }]
    },
    showLocation() {
        this.setData({
            showLocation: !this.data.showLocation
        });
    },
    toggle3d() {
        this.setData({
            enable3d: !this.data.enable3d
        });
    },
    toggleShowCompass() {
        this.setData({
            showCompass: !this.data.showCompass
        });
    },
    toggleOverlooking() {
        this.setData({
            enableOverlooking: !this.data.enableOverlooking
        });
    },
    toggleZoom() {
        this.setData({
            enableZoom: !this.data.enableZoom
        });
    },
    toggleScroll() {
        this.setData({
            enableScroll: !this.data.enableScroll
        });
    },
    toggleRotate() {
        this.setData({
            enableRotate: !this.data.enableRotate
        });
    },
    togglePolygon() {
        this.setData({
            drawPolygon: !this.data.drawPolygon
        });
    },
    onMarkertap(e) {
        console.log('onMarkertap callback:', e);
    },
    onCallouttap(e) {
        console.log('onCallouttap callback:', e);
    },
    onControltap(e) {
        console.log('onControltap callback:', e);
    },
    onRegionchange(e) {
        console.log('onRegionchange callback:', e);
    },
    onTap(e) {
        console.log('onTap callback:', e);
    },
    onUpdated(e) {
        console.log('onUpdated callback:', e);
    },
    onPoitap(e) {
        console.log('onPoitap callback:', e);
    }
});

markers

解释:标记点,用于在地图上显示标记的位置。

属性说明

属性名说明类型必填备注
markerId标记点 idNumbermarker 点击事件回调会返回此 id。建议为每个 marker 设置 Number 类型的 id,保证更新 marker 时有更好的性能。
latitude纬度Number浮点数,范围 -90 ~ 90 。
longitude经度Number浮点数,范围 -180 ~ 180 。
zIndex显示层级Number
iconPath显示的图标String项目目录下的图片路径,支持网络路径、本地路径(相对和绝对路径写法),工具暂不支持绝对路径写法。
rotate旋转角度Number默认为 0,顺时针旋转的角度,范围 0 ~ 360 。
alpha标注的透明度Number默认为 1,无透明,范围 0 ~ 1 。
width标注图标宽度Number默认为图片实际宽度
height标注图标高度Number默认为图片实际高度
callout自定义标记点上方的气泡窗口Object支持的属性见下表,可识别换行符。
label为标记点旁边增加标签Object支持的属性见下表,可识别换行符。
anchor经纬度在标注图标的锚点Object默认底边中点,{x, y},x 表示横向(0-1),y 表示竖向(0-1)。{x: .5, y: 1} 表示底边中点。

callout 属性说明

属性名说明类型备注
content文本String
color文本颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
fontSize文字大小Number
borderWidth边框宽度Number
borderColor边框颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
borderRadiuscallout 边框圆角Number
bgColor背景色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
padding文本边缘留白Number
display‘BYCLICK’:点击显示; ‘ALWAYS’:常显String默认为常显
textAlign文本对齐方式。有效值: left , right , center 。String默认为居中对齐

label 属性说明

属性名说明类型备注
content文本String
color文本颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
fontSize文字大小Number
xlabel 的坐标,原点是 marker 对应的经纬度Number
ylabel 的坐标,原点是 marker 对应的经纬度Number
borderWidth边框宽度Number
borderColor边框颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
borderRadius边框圆角Number
bgColor背景色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
padding文本边缘留白Number
textAlign文本对齐方式。有效值: left , right , center 。String默认为居中对齐

参考示例

图片示例


代码示例: 

在开发者工具中打开

<view class="wrap">
    <map
        style="width: 100%; height: 300px;"
        longitude="{{longitude}}"
        latitude="{{latitude}}"
        markers="{{markers}}"
        bindmarkertap="bindmarkertap"
        bindcallouttap="bindcallouttap">
    </map>
</view>
Page({
    data: {
        latitude: 40.048828,
        longitude: 116.280412,
        markers: [{
            markerId: 1,
            latitude: 40.048828,
            longitude: 116.280412,
            title: 'markerId: 1',
            zIndex: 100,
            iconPath: '../images/location.png',
            rotate: 90,
            callout: {
                display: 'ALWAYS',
                content: '百度科技园',
                color: '#000',
                fontSize: '16',
                borderRadius: 50,
                bgColor: '#5B9FFF',
                padding: 2,
                textAlign: 'center'
            }
        }, {
            markerId: 2,
            latitude: 40.049655,
            longitude: 116.27505,
            title: 'markerId: 2',
            zIndex: 100,
            rotate: 90,
            alpha: 0.5,
            width: 30,
            height: 50,
            label: {
                'content': 'label',
                'color': '#7B68EE',
                'fontSize': 16,
                'borderWidth': 1,
                'borderColor': '#5B9FFF',
                'borderRadius': 50,
                'bgColor': '#ADCFFF',
                'padding': 5,
                'textAlign': 'center'
            },
            anchor: {x: .5, y: 1},
            callout: {
                display: 'BYCLICK',
                content: '西山壹号院',
                color: '#FFF',
                fontSize: '16',
                borderRadius: 50,
                bgColor: '#5B9FFF',
                padding: 2,
                textAlign: 'center'
            }
        }]
    },
    bindmarkertap() {
        swan.showToast({
            title: '点击标记啦',
            icon: 'none'
        });
    },
    bindcallouttap() {
        swan.showToast({
            title: '点击标记上方气泡啦',
            icon: 'none'
        });
    }
});

polyline

解释:指定一系列坐标点,从数组第一项连线至最后一项。

属性说明

属性名说明类型必填备注
points经纬度数组Array[{latitude: 0, longitude: 0}]
color线的颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
width线的宽度Number
dottedLine是否虚线Boolean默认 false
arrowLine带箭头的线Boolean默认 false
arrowIconPath更换箭头图标String在 arrowLine 为 true 时生效
borderColor线的边框颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
borderWidth线的厚度Number

示例

图片示例

代码示例 

在开发者工具中打开

<view class="wrap">
    <map
        style="width: 100%; height: 300px;"
        longitude="{{longitude}}"
        latitude="{{latitude}}"
        polyline="{{polyline}}">
    </map>
</view>

polygon

解释:指定一系列坐标点,根据 points 坐标数据生成闭合多边形。

属性说明

属性名说明类型必填备注
points经纬度数组Array[{latitude: 0, longitude: 0}]
strokeWidth描边的宽度Number
strokeColor描边的颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
fillColor填充颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
zIndex设置多边形 Z 轴数值Number

示例

图片示例


代码示例

在开发者工具中打开

<view class="wrap">
    <map
        style="width: 100%; height: 300px;"
        longitude="{{longitude}}"
        latitude="{{latitude}}"
        polygons="{{polygons}}">
    </map>
</view>
Page({
    data: {
        latitude: 40.048828,
        longitude: 116.280412,
        polygons: [{
            points: [{
                longitude: 116.278796,
                latitude: 40.048828
            }, {
                longitude: 116.27505,
                latitude: 40.049655
            },{
                longitude: 116.27305,
                latitude: 40.050655
            },{
                longitude: 116.27105,
                latitude: 40.051655
            }],
            strokeWidth: 1,
            strokeColor: '#000000AA',
            fillColor: '#000000AA',
            zIndex: 20
        }]
    }
});

circle

解释:在地图上显示圆

属性说明

属性名说明类型必填备注
latitude纬度Number浮点数,范围 -90 ~ 90 。
longitude经度Number浮点数,范围 -180 ~ 180 。
color描边的颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
fillColor填充颜色String8 位十六进制表示,最后 2 位表示 alpha 值(可省略)。
radius半径Number
strokeWidth描边的宽度Number

示例

图片示例


代码示例 

在开发者工具中打开

<view class="wrap">
    <map
        style="width: 100%; height: 300px;"
        longitude="{{longitude}}"
        latitude="{{latitude}}"
        circles="{{circles}}">
    </map>
</view>
Page({
    data: {
        scale: 16,
        latitude: 40.048828,
        longitude: 116.280412,
        circles: [{
            latitude: 40.052751,
            longitude: 116.278796,
            color: '#FF5F41FF',
            fillColor: '#FF5F41FF',
            radius: 200,
            strokeWidth: 2
        }]
    }
});

control

解释:在地图上显示控件,控件不随着地图移动。

属性说明

属性名说明类型必填备注
controlId控件 idNumber在控件点击事件回调会返回此 id
position控件在地图的位置Object控件相对地图位置
iconPath显示的图标String项目目录下的图片路径,支持网络路径、本地路径(相对和绝对路径写法),工具暂不支持绝对路径写法。
clickable是否可点击Boolean默认不可点击

position 属性说明

属性名说明类型必填备注
left距离地图的左边界多远Number默认为 0
top距离地图的上边界多远Number默认为 0
width控件宽度Number默认为图片宽度
height控件高度Number默认为图片高度

示例

图片示例


代码示例 

在开发者工具中打开

<view class="wrap">
    <map
        style="width: 100%; height: 300px;"
        longitude="{{longitude}}"
        latitude="{{latitude}}"
        controls="{{controls}}"
        bindcontroltap="bindcontroltap"
        >
    </map>
</view>
Page({
    data: {
        latitude: 40.048828,
        longitude: 116.280412,
        controls: [{
            controlId: 1,
            iconPath: '/images/navigate.png',
            position: {
                left: 0,
                top: 100,
                width: 50,
                height: 50
            },
            clickable: true
        }]
    },
    bindcontroltap() {
        swan.showToast({
            title: '点击控件',
            icon: 'none'
        })
    }
});

代码示例 - 错误用法:原生组件设置 border 无效,也不可用 cover-view 覆盖为圆角

在开发者工具中打开

<view class="wrap">
    <cover-view class="card-area">
        <map
            longitude="{{longitude}}"
            latitude="{{latitude}}">
        </map>
    </cover-view>
</view>
.card-area { 
    width: 3.88rem;
    height: 2.18rem;
}

Bug & Tip

  • Tip:地图组件的经纬度必填,如果不填经纬度则默认值是北京的经纬度。
  • Tip:map 组件是由客户端创建的原生组件,它的层级是最高的,不能通过 z-index 控制层级。
  • Tip:请勿在 scroll-view、swiper、picker-view、movable-view 中使用 map 组件。
  • Tip:CSS 动画对 map 组件无效。
  • Tip:cover-view、cover-image 组件可覆盖在 map 组件之上。
  • Bug:map 组件的 markers 的 label 暂不支持换行。
  • Tip:Android 与 iOS 定位精度不同,双端定位存在差异。
  • Tip:map 组件使用的经纬度是火星坐标系,调用 swan.getLocation 接口需要指定 type 为 gcj02 。
  • Tip:开发者工具由于坐标系不同,定位与客户端存在差异。开发时请以客户端为准。
  • Bug:Web 态由于坐标系不同,定位与客户端存在差异,坐标与客户端相比有一定偏移。待后续版本修复。


百度智能小程序 rtc实时音视频通话画面
百度智能小程序 画布
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

百度智能小程序开发文档

百度智能小程序 组件

百度智能小程序 地图

百度智能小程序 画布

百度智能小程序 API

百度智能小程序 界面

百度智能小程序 关注小程序引导组件

百度智能小程序 自定义组件

百度智能小程序 媒体

百度智能小程序 设备

百度智能小程序 拨打电话

百度智能小程序 内存警报

百度智能小程序 手机联系人

百度智能小程序 用户截屏事件

百度智能小程序 第三方平台

百度智能小程序 开放接口

百度智能小程序 百度收银支付

百度智能小程序 分包预下载

百度智能小程序 数据分析

百度智能小程序 服务端

百度智能小程序 云开发

百度智能小程序 初始化

百度智能小程序 云函数

百度智能小程序 服务端初始化

百度智能小程序 服务器获取上下文

百度智能小程序 服务端云函数

百度智能小程序 开发教程

百度智能小程序 功能开发

百度智能小程序 基本原理

百度智能小程序 小程序自动化

百度智能小程序 视频教程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }