react-native-civi-map

用于文明城市创建管理系统的基于高德地图的自定义地图组件

Usage no npm install needed!

<script type="module">
  import reactNativeCiviMap from 'https://cdn.skypack.dev/react-native-civi-map';
</script>

README

地图组件使用描述文件 第一步:安装组件 npm i react-native-civi-map --save

第二步:手动配置权限等: Android配置: 1.在android/setting.gradle文件中添加以下语句,将程序包引入到项目中 include ':react-native-civi-map' project(':react-native-civi-map').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-civi-map/android')

2.在android/app/build.gradle文件的dependencies下添加项目依赖 compile project(':react-native-civi-map')

3.在android/app/src/main/java/com/mymaptest/MainApplication.java文件中添加包 import com.example.reactnativecivimap.CiviMapPackage;

@Override protected List getPackages() { return Arrays.asList( new MainReactPackage(), new CiviMapPackage() //该处为添加的相关包 ); } 4.在android/app/src/main/AndroidManifest.xml文件中配置地图使用的相关权限,如下:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

5.在android/app/src/main/AndroidManifest.xml文件中的标签内配置高德地图使用的appkey。 其中,高德地图的appkey在高德地图官网中申请,

6.当启动导航组件时,需在android/app/src/main/AndroidManifest.xml文件中的标签内添加以下语句:

第三步:地图组件调用 import {MapView,MapFunction} from 'react-native-civi-map'

const SCREEN_WIDTH=Dimensions.get('window').width; const SCREEN_HEIGHT=Dimensions.get('window').height;

const annotionList=[{pointName:'中央公园快递费;看的风景收到了附件撒旦教发送点击',coordinate:'31.2716,118.3645',address:'中山南路253号',description:'驳回',value:3,target:'point',targetValue:'3'}, {pointName:'滨江公园',coordinate:'31.2716,118.3655',address:'银湖中路76号打客服阿里斯顿家乐福静安寺亮点分ADSL就发来看时代峻峰按键手动阀',description:'通过',value:2,target:'point',targetValue:'2'}, {pointName:'金鹰国际',coordinate:'31.2726,118.3645',address:'长江中路33号',description:'待测评',value:0,target:'point',targetValue:'0'}, {pointName:'方特欢乐世界',coordinate:'31.2732,118.3785',address:'九华山中路1号',description:'待审核',value:1,target:'point',targetValue:'1'}];

const annotionList2=[{pointName:'中央公园快递费;看的风景收到了附件撒旦教发送点击',coordinate:'31.2716,118.3645',address:'中山南路253号',description:'驳回',value:3,target:'point',targetValue:'3'}, {pointName:'方特欢乐世界',coordinate:'31.2732,118.3785',address:'九华山中路1号',description:'待审核',value:1,target:'point',targetValue:'1'}];

const routePlanning=[{pointName:'出发点',coordinate:'31.2716,118.3655'},{pointName:'途径点1',coordinate:'31.3716,118.3655'},{pointName:'途径点2',coordinate:'31.4716,118.2655'}, {pointName:'途径点3',coordinate:'31.5716,118.3755'},{pointName:'途径点4',coordinate:'31.6716,118.6655'},{pointName:'途径点5',coordinate:'31.6916,118.4655'},{pointName:'途径点6',coordinate:'31.6916,118.5655'}, {pointName:'途径点7',coordinate:'31.7116,118.3955'},{pointName:'途径点8',coordinate:'31.7716,118.6655'},{pointName:'终点',coordinate:'31.8716,118.9655'},];

type Props = {}; let self=null; export default class App extends Component { constructor(props) { super(props); self=this; this.state = { annotionState:true, annotionList:annotionList, }; }

render() { return ( <MapView style={{width:SCREEN_WIDTH,height:SCREEN_HEIGHT-30}} showRegion="31.2716,118.3645" district="芜湖市" annotions={JSON.stringify(self.state.annotionList)} onClick={(res)=>{self._onClickMarker(res)}} /> <TouchableOpacity onPress={()=>{self._onRoute()}}> 路线规划 <TouchableOpacity onPress={()=>{self._onLocate()}}> 定位 <TouchableOpacity onPress={()=>{self._onGetLocationInfo()}}> 获取用户位置 <TouchableOpacity onPress={()=>{self._onGetPointInfo()}}> 点位查询 <TouchableOpacity onPress={()=>{self._onChangeState()}}> 标记点位状态切换

          </View>
      </View>
  );

}

_onClickMarker(res){
    console.log('点击Marker');
    console.log(res);
}

_onRoute(){
    MapFunction.routePlanning(JSON.stringify(routePlanning));
}

_onLocate(){
    MapFunction.getLocation();
}

_onGetLocationInfo(){
    MapFunction. getLocationInfo('31.2716,118.3655,0',(res)=>{
        console.log('B');
        console.log(res);
    });
}

_onGetPointInfo(){
    // MapFunction. getPointInfo('公园,0553,0',(res)=>{
    //     console.log('B');
    //     console.log(res);
    // });
    MapFunction. searchPoint('公园,0553',(res)=>{
        console.log('B');
        console.log(res);
    });
}

_onChangeState(){
    if(self.state.annotionList===annotionList){
        self.setState({
            annotionList:annotionList2,
        });
    }else {
        self.setState({
            annotionList:annotionList,
        });
    }
};

}

const styles = StyleSheet.create({ rowFrame:{ flexDirection:'row', width:SCREEN_WIDTH, paddingVertical:5, }, container: { flex: 1, backgroundColor: '#F5FCFF', }, btnFrame:{ position:'absolute', }, btnView:{ paddingHorizontal:10, paddingVertical:5, margin:5, borderRadius:3, borderColor:'orange', borderWidth:1, } });