{"id":20160591,"url":"https://github.com/reactnativecn/react-native-bdmap","last_synced_at":"2025-04-10T00:11:07.034Z","repository":{"id":57335691,"uuid":"72340401","full_name":"reactnativecn/react-native-bdmap","owner":"reactnativecn","description":null,"archived":false,"fork":false,"pushed_at":"2017-10-12T16:12:35.000Z","size":54287,"stargazers_count":6,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-10T00:10:52.838Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactnativecn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-30T09:33:00.000Z","updated_at":"2019-12-25T06:04:10.000Z","dependencies_parsed_at":"2022-09-07T16:40:58.086Z","dependency_job_id":null,"html_url":"https://github.com/reactnativecn/react-native-bdmap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactnativecn%2Freact-native-bdmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactnativecn%2Freact-native-bdmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactnativecn%2Freact-native-bdmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactnativecn%2Freact-native-bdmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactnativecn","download_url":"https://codeload.github.com/reactnativecn/react-native-bdmap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131316,"owners_count":21052819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T00:14:50.553Z","updated_at":"2025-04-10T00:11:07.014Z","avatar_url":"https://github.com/reactnativecn.png","language":"Objective-C","readme":"## 安装\n\n```\nnpm install react-native-bdmap --save\nreact-native link react-native-bdmap\n```\n\n此时应看到输出\n\n```\nrnpm-link info Linking react-native-bdmap android dependency\nrnpm-link info Android module react-native-bdmap has been successfully linked\nrnpm-link info Linkng react-native-bdmap ios dependency\nrnpm-link info iOS module react-native-bdmap has been successfully linked\n```\n\n为成功\n\nAndroid: 入口代码\n\n在`android/app/src/main/你的包名/MainActivity.java`中增加如下代码:\n\n```java\nimport android.os.Bundle;\nimport com.baidu.mapapi.SDKInitializer;\n\npublic class MainActivity extends ReactActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        SDKInitializer.initialize(this.getApplicationContext());\n    }\n    ...\n}\n```\n\nAndroid: 添加混淆规则:\n\n在`android/app/proguard-rules.pro`尾部,增加如下内容:\n\n```\n-keep class com.baidu.** {*;}\n-keep class vi.com.** {*;}    \n-dontwarn com.baidu.**\n```\n\nAndroid: 配置API Key\n\n在`android/app/build.gradle`中, `defaultConfig`内,增加如下代码:\n\n```\n    defaultConfig {\n        // 增加下面3行:\n        manifestPlaceholders = [\n                BAIDU_MAP_API_KEY: \"Android端ApiKey\"   //在此修改百度地图的APIKEY\n        ]\n    }\n```\n\niOS: 配置Info.plist\n\n确保Info.plist中有以下内容\n\n```\n    \u003ckey\u003eNSAppTransportSecurity\u003c/key\u003e\n    \u003cdict\u003e\n        \u003ckey\u003eNSAllowsArbitraryLoads\u003c/key\u003e\n        \u003ctrue/\u003e\n    \u003c/dict\u003e\n    \u003ckey\u003eBDMapApiKey\u003c/key\u003e\n    \u003cstring\u003eiOS端ApiKey\u003c/string\u003e\n    \u003ckey\u003eCFBundleDisplayName\u003c/key\u003e\n    \u003cstring\u003e应用显示名称\u003c/string\u003e\n```\n\n如果只有应用在前台时定位,增加以下内容\n\n```\n    \u003ckey\u003eNSLocationWhenInUseUsageDescription\u003c/key\u003e\n    \u003cstring\u003e关于本应用为何要用此功能的描述\u003c/string\u003e\n```\n\n如果应用在后台时也需要定位,增加以下内容\n\n```\n    \u003ckey\u003eNSLocationAlwaysUsageDescription\u003c/key\u003e\n    \u003cstring\u003e关于本应用为何要用此功能的描述\u003c/string\u003e\n```\n\niOS: 添加依赖\n\n将`node_modules/react-native-baidu-map/ios/SDK/`下所有.framework文件拖入工程\n\n并将`node_modules/react-native-baidu-map/ios/SDK/BaiduMapAPI_Map.framework/Resources/mapapi.bundle`拖入工程\n\n在Build Settings中的Framework Search Paths中,增加:\n\n`$(SRCROOT)/../node_modules/react-native-bdmap/ios/SDK`\n\n在Build Phases中的Link Binary With Libraries中,增加:\n\n* CoreTelephony.framework\n* libc++.tbd\n* libstdc++.6.0.9.tbd\n* libsqlite3.tbd\n\n## API\n\n#### getDistance({latitude, longitude}, {latitude, longitude}) =\u003e Promise\u003cnumber\u003e\n\n提供经纬度,获取两点之间的实际地理距离,返回单位是米\n\n#### getLocation([options]) =\u003e Promise\u003cposition\u003e\n\n获取当前的位置.position包含如下字段:\n\n* code: 错误码,参见[错误码 - Android定位SDK](http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/ermsg)\n* latitude\n* longitude\n* speed: 移动速度,可能为空\n* altitude: 当前高度,可能为空\n* address: 当前地址名字,可能为空\n\n#### watchPosition(success[, error[, options]]) =\u003e watchId\n\n持续监听当前的位置.success回调会被多次调用,其参数意义同`getLocation()`的返回值\n\n#### clearWatch(watchId)\n\n清除一个位置监听器\n\n#### stopObserving()\n\n清除所有位置监听器\n\n#### geoReverse({latitude, longitude}) =\u003e Promise\u003cobject\u003e\n\n逆地理编码. 返回编码信息以及Poi信息\n\n#### poiSearch({latitude, longitude}, {keyword, sortMode, radius, pageIndex, pageCapacity}) =\u003e Promise\u003cobject\u003e\n\n* keyword: 搜索关键字\n* sortMode: 'composite': 综合排序 'nearToFar': 由近到远排序\n* radius: 搜索半径\n* pageIndex: 分页页码\n* pageCapacity: 分页每页个数\n\n## class BDMapView extends React.Component\n\n地图组件.\n\n### 属性列表\n\n#### 包含View的所有属性\n\n#### blurMarkerWhileMove: bool\n\n是否在移动位置的时候取消聚焦标记物\n\n#### region: {latitude, longitude, latitudeDelta, longitudeDelta}\n\n当前显示的区域.改变这个属性的值将触发视野的变化.\n\n区域使用中心的坐标和要显示的范围来定义。\n\n注意: 这类似TextInput等Controlled Component,如果你指定了这个值,\n并且没有随onRegionChange改变这个值,用户将无法移动地图\n\n典型写法:\n\n```\nimport { BDMapView } from 'react-native-bdmap';\n\n//...\n\n    state = {};\n    render() {\n      return \u003cBDMapView \n        region={this.state.region} \n        onRegionChange={region =\u003e this.setState({region})}\n        /\u003e\n    }\n```\n\n#### defaultRegion: {latitude, longitude, latitudeDelta, longitudeDelta}\n\n初始化地图的时候显示的区域.没指定region时才会生效.改变这个属性没有任何作用.\n\n#### annotations: [{latitude, longitude, onPress, onFocus, onBlur, id, icon}]\n\n标记物列表\nid, latitude, longitude是必填项.\n\nicon={require('./xxx.png')} 可以指定标记物的图片\n\n当此属性改变时,也会通过React的dom diff机制进行,不必担心带来大幅创建View的开销\n\n#### onRegionChange: func(region)\n\n在用户拖拽地图的时候持续调用此回调函数。\n\n#### onRegionChangeComplete: func(region)\n\n当用户停止拖拽地图之后，调用此回调函数一次。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactnativecn%2Freact-native-bdmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactnativecn%2Freact-native-bdmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactnativecn%2Freact-native-bdmap/lists"}