<QMapView />
Component API
Props
Prop |
Type |
Default |
Note |
region |
Region |
|
控制地图显示的区域
显示的区域由区域的中心点及其偏移量/地图缩放等级决定 |
initialRegion |
Region |
|
控制地图显示区域,但与 region 不一样,该属性只会在第一次渲染时生效 |
showsUserLocation |
Boolean |
false |
显示用户位置,如果设置为 true 将会请求定位权限 |
showsCompass |
Boolean |
true |
是否展示指南针 |
showsBuildings |
Boolean |
true |
是否展示建筑 |
showsTraffic |
Boolean |
true |
是否展示交通信息 |
showsIndoors |
Boolean |
true |
是否展示室内信息(仅 Adr 生效) |
zoomEnabled |
Boolean |
true |
是否允许缩放 |
minZoomLevel |
Number |
4 |
最小缩放等级,缩放范围为 4 到 20 |
maxZoomLevel |
Number |
20 |
最大缩放等级,缩放范围为 4 到 20 |
rotateEnabled |
Boolean |
true |
是否允许旋转地图 |
scrollEnabled |
Boolean |
true |
是否允许滑动地图 |
coordinateType |
String |
GCJ02 |
地图坐标系,iOS国内默认GCJ02,支持BD09,GCJ02,WGS84 |
Events
Event Name |
Returns |
Notes |
onMapReady |
|
地图加载完毕 |
onRegionChange |
{region: RegionChange} |
地图展示信息发生改变(展示区域发生变化,缩放) |
onRegionChangeStart |
{region: RegionChange} |
地图展示信息将发生改变(展示区域发生变化,缩放) |
onUserLocationChange |
{ coordinate: Location } |
用户位置信息发生改变 |
onPress |
{ coordinate: LatLng, position: Point } |
点击地图 |
onLongPress |
{ coordinate: LatLng, position: Point } |
长按地图 |
onMarkerPress |
{ coordinate: LatLng, position: Point } |
地图中的 Marker 被点击 |
onMarkerSelect |
{ coordinate: LatLng, position: Point } |
地图中的 Marker 被选中,当 Callout 出现前回调 Note: iOS only. |
onMarkerDeselect |
{ coordinate: LatLng, position: Point } |
地图中的 Marker 取消选中,当 Callout 消失时回调 Note: iOS only. |
onCalloutPress |
{ coordinate: LatLng, position: Point } |
Callout 被点击 |
onMarkerDragStart |
{ coordinate: LatLng, position: Point } |
Marker 开始被拖拽(Marker必须允许拖拽) |
onMarkerDrag |
{ coordinate: LatLng, position: Point } |
Marker 被拖拽中(Marker必须允许拖拽) |
onMarkerDragEnd |
{ coordinate: LatLng, position: Point } |
Marker 被拖拽完毕(Marker必须允许拖拽) |
Methods
Method Name |
Arguments |
Notes |
animateToRegion |
region: Region , duration: Number |
移动显示区域 |
animateToCoordinate |
coordinate: LatLng , duration: Number |
以点为中心移动地图显示区域 |
fitToSuppliedMarkers |
markerIDs: String[], options: { animated: Boolean } |
如果你要在 ComponentDidMount 时使用该方法, 请确保setTimeout,否则将引起性能问题,edgePadding 属性仅 IOS 生效 |
fitToCoordinates |
coordinates: Array<LatLng>, options: { edgePadding: EdgePadding, animated: Boolean } |
如果在安卓的 ComponentDidMount 式使用该方法, 将有可能引起一场. 推荐在 QMapView 的 onLayout 时使用. |
drawRoute |
startCoordinate: LatLng, endCoordinate: LatLng, options: { transportType: String, lineWidth: Number, lineColor: String needMapFit: Boolean, edgePadding: EdgePadding, animated: Boolean } |
注意使用时lineColor默认为'#000000', needMapFit代表画路径后,地图是否调整到画路径位置, transportType 支持 walking、automobile |
clearAllRoutes |
无参数 |
清除全部用drawRoute方法绘制的路径 |
pointForCoordinate |
coordinate: Latlng |
promise返回该坐标对应的地图view上的点 |
Types
type Region {
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
isAboard: true,
zoom: 14,
coordinateType: 'BD09'
}
isAboard
若不设置,则 native 会自行判断,结果存在误差
zoom
设置后,将忽略 Delta 值的处理
coordinateType
若不设置,在国外默认为 WGS84
,国内 Android 为 BD09
,IOS 为 GCJ02
Delta
设置该值后,将以给定的点为中心,计算出的东北点
与西南点
为最远距离进行区域渲染,给出一个算式
const { width, height } = Dimensions.get('window');
const ASPECT_RATIO = width / height;
const LATITUDE_DELTA = 0.0922;
const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO;
type RegionChange {
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
zoom: 14
}
type LatLng {
latitude: Number,
longitude: Number,
}
type Location {
latitude: Number,
longitude: Number,
isAboard: Stirng,
coordinateType: String
}
type Point {
x: Number,
y: Number,
}
type EdgePadding {
top: Number,
right: Number,
bottom: Number,
left: Number
}