React Native 高德地图组件的使用(react-native-amap3d)
来源:互联网 发布:剑灵人女高挑身材数据 编辑:程序博客网 时间:2024/05/22 04:48
这篇文章主要介绍 RN 高德地图组件 react-native-amap3d,安装过程请参考 README。
基本使用
import {MapView} from 'react-native-amap3d'render() { return <MapView style={StyleSheet.absoluteFill}/>}
设置地图状态
所谓的地图状态包括:中心坐标(coordinate)、缩放级别(zoomLevel)、倾斜度(titl)、旋转角度(rotation)、显示区域(region)。
通过 coordinate、zoomLevel 设置显示区域
<MapView style={StyleSheet.absoluteFill} coordinate={{ latitude: 39.90980, longitude: 116.37296, }} zoomLevel={18} tilt={45} showsIndoorMap/>
通过 region 设置显示区域
region 由中心坐标和经纬跨度组成,相对于 zoomLevel,region 可以精确控制显示边界。
<MapView style={StyleSheet.absoluteFill} region={{ latitude: 39.90980, longitude: 116.37296, latitudeDelta: 0.1, longitudeDelta: 0.1, }}/>
动画过渡
通过属性控制的地图状态切换会显得比较生硬,如果希望地图状态切换是动画过渡的,可以使用 animateTo 方法。
<MapView ref={ref => this._mapView} style={StyleSheet.absoluteFill}/>this._mapView.animateTo({ tilt: 45, rotation: 90, zoomLevel: 18, coordinate: { latitude: 39.97837, longitude: 116.31363, }})
5种地图模式
目前高德地图支持5种地图模式:
- 标准(standard)
- 卫星(satellite)
- 导航(navigation)
- 公交(bus)
- 夜间(night)
<MapView style={StyleSheet.absoluteFill} zoomLevel={14} mapType='satellite'/>
地图事件
目前支持的地图事件有:
onPress
点按事件onLongPress
长按事件onLocation
定位事件onStatusChange
地图状态变化事件,变化过程会一直调用onStatusChangeComplete
地图状态变化结束事件
可以通过 event.nativeEvent
获取事件传递过来的数据
定位
通过 locationEnabled
控制是否启用定位,通过 locationInterval
和 distanceFilter
可以控制定位频次。
<MapView style={StyleSheet.absoluteFill} locationEnabled locationInterval={10000} distanceFilter={10} onLocation={({nativeEvent}) => console.log(`${nativeEvent.latitude}, ${nativeEvent.longitude}`)}/>
添加标注点
默认标注点
<MapView style={StyleSheet.absoluteFill}> <Marker active title='这是一个标注点' color='red' description='Hello world!' coordinate={{ latitude: 39.806901, longitude: 116.397972, }} /></MapView>
可拖拽的标注点
<Marker draggable onDragEnd={({nativeEvent}) => console.log(`${nativeEvent.latitude}, ${nativeEvent.longitude}`)} coordinate={{ latitude: 39.806901, longitude: 116.397972, }}/>
自定义图片
可以通过 image
属性设置标注点图片,image
的值是图片资源的名字,对于 android 是 drawable,对于 ios 是 Images.xcassets。
<Marker title='自定义图片' image='flag' coordinate={{ latitude: 39.806901, longitude: 116.397972, }}/>
自定义 View
除了 image
,还可以用 View 作为标注点,更自由的控制标注点的显示。
<Marker active title='自定义 View' coordinate={{ latitude: 39.806901, longitude: 116.397972, }} icon={() => <View style={style.marker}> <Text style={style.markerText}>{(new Date()).toLocaleTimeString()}</Text> </View> }/>const style = StyleSheet.create({ marker: { backgroundColor: '#009688', alignItems: 'center', borderRadius: 5, padding: 5, }, markerText: { color: '#fff', },})
自定义弹出窗口
<Marker active coordinate={{ latitude: 39.806901, longitude: 116.397972, }}> <View style={style.infoWindow}> <Text>自定义弹出窗口</Text> </View></Marker>const style = StyleSheet.create({ infoWindow: { backgroundColor: '#8bc34a', padding: 10, borderRadius: 10, elevation: 4, borderWidth: 2, borderColor: '#689F38', },})
绘制线段
<MapView zoomLevel={10} style={StyleSheet.absoluteFill}> <Polyline width={10} color='rgba(255, 0, 0, 0.5)' coordinates={[ { latitude: 40.006901, longitude: 116.097972, }, { latitude: 40.006901, longitude: 116.597972, }, { latitude: 39.706901, longitude: 116.597972, }, ]} /></MapView>
热力图
import {MapView, HeatMap} from 'react-native-amap3d'_coordinates = (new Array(200)).fill(0).map(i => ({ latitude: 39.5 + Math.random(), longitude: 116 + Math.random(),}))<MapView zoomLevel={9} style={StyleSheet.absoluteFill}> <HeatMap opacity={0.8} radius={20} coordinates={this._coordinates}/></MapView>
海量点
批量添加的 Marker 数量过多会出现性能问题,这时可以考虑用海量点(MultiPoint)。
import {MapView, MultiPoint} from 'react-native-amap3d'_points = Array(1000).fill(0).map(i => ({ latitude: 39.5 + Math.random(), longitude: 116 + Math.random(),}))_onItemPress = point => Alert.alert(this._points.indexOf(point).toString())<MapView zoomLevel={10} style={StyleSheet.absoluteFill}> <MultiPoint image='point' points={this._points} onItemPress={this._onItemPress} /></MapView>
更多示例
请参考 examples
作者:7c00
链接:http://www.jianshu.com/p/fe90fc6a0308
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- React Native 高德地图组件的使用(react-native-amap3d)
- React Native 高德地图组件的使用(react-native-amap3d)
- React Native 之组件react-native-sound的使用
- 高德地图 react-native(一)
- React Native 集成高德地图
- react native测量组件的宽高
- react-native图片组件的使用
- React Native 的 Navigator 组件使用方式
- React Native 的 Navigator 组件使用方式
- React Native中组件的封装使用
- React native Model组件的使用
- React Native填坑之旅 -- 使用iOS原生视图(高德地图)
- react-native中抽屉的使用(react-native-drawer)
- React Native使用原生组件
- React-Native中导航组件react-navigation的使用
- react/react native 组件的刷新机制
- react-native组件的生命周期
- React Native 组件的生命周期
- Python 三种导入模块的方法和区别
- 产权(所有权)和使用权
- SpringCloud 笔记 (四)---- 简单源码分析
- Spark作业执行原理
- c# 用Aspose.word读写word表格中某个单元格的用法
- React Native 高德地图组件的使用(react-native-amap3d)
- C#中的反射原理及应用
- redhat Linux6下搭建FTP服务器
- ajax动态获取数据库中的数据
- Springboot 之 解决IDEA读取properties配置文件的中文乱码问题
- C#编程之tableLayoutPanel合并行和列
- Python3.5——局部变量与全局变量作用域
- 使用Volley 网络请求post,json作为参数
- jquery编程的标准写法和最佳实践(jquery代码规范)