react-native-baidu-map( react-anitive 地图 )

今天把地图整理一下,希望可以让大家派上用上。

install 安装

npm install react-native-baidu-map --save

去官方申请key

百度地图sdk有教程链接

ios 配置

  • Project navigator->Libraries->Add Files to 选择 node_modules/react-native-baidu-map/ios/RCTBaiduMap.xcodeproj

  • Project navigator->Build Phases->Link Binary With Libraries 加入 libRCTBaiduMap.a

  • Project navigator->Build Settings->Search Paths

    • TARGETS-Build Setting - Framework Search Paths 里面添加

        $(SRCROOT)/../node_modules/react-native-baidu-map/ios/lib
      
    • TARGETS-Build Setting - Header Search Paths 里面添加

        $(SRCROOT)/../node_modules/react-native-baidu-map/ios/lib
        $(SRCROOT)/../node_modules/react-native-baidu-map/ios/RCTBaiduMap 
      
    • TARGETS-Build Setting - Library Search Paths 里面添加

        $(SRCROOT)/../node_modules/react-native-baidu-map/ios/lib     
      
  • Project navigator->Build Phases->Link Binary With Libraries 加入 CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework、libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、CoreTelephony.framework 、libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)

添加依赖, react-native-baidu-map/ios/lib 下的全部 framwordk:
image
ios项目根目录中添加 node_modules/react-native-baidu-map/ios/lib/BaiduMapAPI_Map.framework/Resources/mapapi.bundle 文件
image
image
image.png
  • AppDelegate.m init 初始化

      #import "RCTBaiduMapViewManager.h"
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
          ...
          [RCTBaiduMapViewManager initSDK:@"api key"];
          ...
      }
    
  • ios处理报错
    (1)

    • RCTBaiduMapView.h 报错 'RCTViewManager.h' file not found

    • RCTBaiduMapView.h 报错 'RCTConvert+CoreLocation.h' file not found

        //#import "RCTViewManager.h"
        #import <React/RCTViewManager.h>
        //#import "RCTConvert+CoreLocation.h"
        #import <React/RCTConvert+CoreLocation.h>
      
      

(2)


image.png
#import "RCTBridgeModule.h"  注释即可

android 配置

  • settings.gradle 加入

      include ':react-native-baidu-map'
      project(':react-native-baidu-map').projectDir = new File(settingsDir, '../node_modules/react-native-baidu-map/android')
    
  • android/app/build.gradle dependencies中加入

      compile project(':react-native-baidu-map')
    
  • android/app/src/main/java/../MainApplication 中加入

      import org.lovebing.reactnative.baidumap.BaiduMapPackage;//这一句
    
      [@Override](https://my.oschina.net/u/1162528)
          protected List<ReactPackage> getPackages() {
            return Arrays.<ReactPackage>asList(
                new MainReactPackage(),
                new BaiduMapPackage(getApplicationContext()) //这一句
                ...
            );
          }     
    
  • android/app/src/main/AndroidMainifest.xml 文件加入

    • application 标签中加入

        <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="bF65Gy5KVAaFNS瞎写的xQkssgvR2dV"/>         
      
    • 在manifest标签级下面加入

        <!-- 这个权限用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
        </uses-permission>
        <!-- 这个权限用于访问GPS定位-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-
        permission>
         <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-
        permission>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <uses-permission android:name="android.permission.WAKE_LOCK"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
      
      
  • 安卓错误处理

    • ***/KJChildDemo/node_modules/react-native-baidu-map/android/src/main/java/org/lovebing/reactnative/baidumap/BaiduMapPackage.java错误: 方法不会覆盖或实现超类型的方法

      @Override注释掉 貌似0.47后没有这个方法了

    • **/android/app/src/main/java/com/kjchilddemo/MainApplication.java Error:错误: 找不到符号 符号: 类 BaiduMapPackage

      在这个文件头部加入import org.lovebing.reactnative.baidumap.BaiduMapPackage;

react-native-baidu-map 使用

MapView Props

  • zoomControlsVisible 缩放控件是否可见 ture(Android only)
  • trafficEnabled 交通图 false
  • baiduHeatMapEnabled 百度地图热力图 false
  • mapType 地图类型 1--一般性的二维地图 2--卫星地图
  • zoom 放大缩小
  • center 地图位置
  • marker 标记
  • markers 多个标记
  • onMapStatusChangeStart Android
  • onMapStatusChange 地图放大,移动等变化时回调
  • onMapStatusChangeFinish Android
  • onMapLoaded 地图加载时调用函数
  • onMapClick 点击地图时调用函数,回调经纬度
  • onMapDoubleClick 双击地图时调用,回调经纬度
  • onMarkerClick 点击标记时回调
  • onMapPoiClick 点击(标点,位置)回调,

eolocation Methods

  import {Geolocation} from 'react-native-baidu-map';
  • reverseGeoCode 反向地理编码

      Geolocation.reverseGeoCode(lat,lng)
                    .then(data => {
                      console.log('reverseGeoCode',data);
                    })
                    .catch(e =>{
                      console.warn(e, 'error');
                    }) 
    
      /***********回调结果************/
       { address: '上海市浦东新区金海路22号',
        city: '上海市',
        district: '浦东新区',
        longitude: '121.609842',
        province: '上海市',
        cityCode: '289',
        streetName: '金海路',
        latitude: '31.262580',
        streetNumber: '22号' }   
    
  • reverseGeoCodeGPS 反向地理编码GPS

      Geolocation.reverseGeoCodeGPS(lat,lng)
            .then(data => {
              console.log('reverseGeoCodeGPS',data);
            })
            .catch(e =>{
              console.warn(e, 'error');
            })
    
      /***********回调结果************/
       { address: '上海市浦东新区东陆公路',
        city: '上海市',
        district: '浦东新区',
        longitude: 121.62064,
        province: '上海市',
        cityCode: '289',
        streetName: '东陆公路',
        latitude: 31.26606,
        streetNumber: '' }  
    
  • geocode 地理编码(经纬度)

      Geolocation.geocode('上海市','杨高中路')
            .then(data => {
              console.log('geocode',data);
            })
            .catch(e =>{
              console.warn(e, 'error');
            })
    
      /***********回调结果************/
       { longitude: '121.569186', latitude: '31.240405' }             
    
    
  • getCurrentPosition 获取当前位置

      Geolocation.getCurrentPosition()
            .then(data => {
              console.log('getCurrentPosition',data);
            })
            .catch(e =>{
              console.warn(e, 'error');
            })
    
      /***********回调结果************/
       { address: '上海市浦东新区杨高中路31弄-55-临',
        city: '上海市',
        district: '浦东新区',
        longitude: 121.608108,
        province: '上海市',
        cityCode: '289',
        streetName: '杨高中路',
        latitude: 31.260488,
        streetNumber: '31弄-55-临' }      
    
    • ios

      {"latitude": 0.0, "longitude": 0.0, "address": "", "province": "", "cityCode": "", "city": "", "district": "", "streetName": "", "streetNumber": ""}

    • Android

      {"latitude": 0.0, "longitude": 0.0, "direction": -1, "altitude": 0.0, "radius": 0.0, "address": "", "countryCode": "", "country": "", "province": "", "cityCode": "", "city": "", "district": "", "street": "", "streetNumber": "", "buildingId": "", "buildingName": ""}

亲测没有问题,觉得有用的小伙伴点个小红心和关注就行😄,么么哒。

友情提示:在开发中有遇到RN相关的技术问题,欢迎小伙伴加入交流群(620792950),在群里提问、互相交流学习。交流群也定期更新最新的RN学习资料给大家,谢谢大家支持!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容