基本用法:
<MapView>
<MapView.Marker
title="This is a marker"
color="#3498db"
coordinate={{ latitude: 39, longitude: 113 }}
/>
</MapView>
自定义图片标记:
<MapView>
<MapView.Marker
title="This is a image marker"
image="flag"
coordinate={{ latitude: 39, longitude: 113 }}
/>
</MapView>
自定义 View 标记:
<MapView>
<MapView.Marker
view={() => (
<View>
<Text>This is a custom view marker</Text>
</View>
)}
coordinate={{ latitude: 39, longitude: 113 }}
/>
</MapView>
自定义 callout:
<MapView>
<MapView.Marker coordinate={{ latitude: 39, longitude: 113 }}>
<MapView.Callout>
<Text>This is a custom callout</Text>
</MapView.Callout>
</MapView.Marker>
</MapView>
标记点坐标
标题文本,点击标记时弹出显示。
默认标记的颜色
设置自定义图片,参数是原生图片名称,这需要你对原生开发有一定的了解。尽管 view
也能自定义图片并且更灵活,但我会建议优先使用 image
,因为原生图片的开销更小。
android 对应 drawable:
context.resources.getIdentifier(image, "drawable", context.packageName)
ios 对应:
[UIImage imageNamed:image]
自定义 View,需要注意,自定义 View 里的触摸事件是失效的。
是否选中。
整个地图只有一个正在选中的标记,选中状态的标记会显示 Callout,点击其他区域时 Callout 会自定隐藏。
是否可拖拽
点击标记时调用
点击 Callout 时调用
开始拖拽时调用
正在拖拽时调用
结束拖拽时调用
选中标记,相当于一次手动点击标记
更新自定义 View。
由于 android 需要将 ReactView 转成图片,如果自定义 View 内部存在异步更新,则不能自动更新,必要时候需要手动触发更新。比如:
<MapView.Marker
ref={ref => this.marker = ref}
view={() => (
<Image
source={{ uri: '...' }}
onLoad={() => this.marker.update()}
/>
)}
/>