文档章节

RN 接入高德地图遇到的一些问题

Jack088
 Jack088
发布于 07/03 01:13
字数 613
阅读 99
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

react-native-amap-geolocation、react-native-amap3d

1、iOS Geolocation.getCurrentPosition 获取坐标后,没有返回 address 信息?

逆地理编码

Android 默认返回逆地理编码,而 iOS 需要手动设置。

import { setLocatingWithReGeocode, setNeedAddress } from "react-native-amap-geolocation";

// android
setNeedAddress(true);

// ios
setLocatingWithReGeocode(true);

ps:使用 setLocatingWithReGeocode(true)后还是没有address信息。最终我是通过 [_manager requestLocationWithReGeocode:YES completionBlock:self.completionBlock];  来获取逆地址信息的。

将 AMapGeolocation.m 中 [_manager startUpdatingLocation]; 替换成 [_manager requestLocationWithReGeocode:YES completionBlock:self.completionBlock];

RCT_EXPORT_METHOD(start) {
  
//  [_manager startUpdatingLocation];
  
  [_manager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
  if(error){
  [self sendEventWithName:@"AMapGeolocation"
  body:@{
  @"errorCode":@(error.code),
  @"errorInfo": error.localizedDescription,
  }];
  }else{
  id json = [self json:location reGeocode:regeocode];
   [self sendEventWithName:@"AMapGeolocation" body:json];
  }
  }];
}

或是自己定义一个方法共 js 处调用。然后在js文件中将 Geolocation.getCurrentPosition 方法中的 _1.start();改为_1.requestLocationWithReGeocode(true);(需要在index文件中导出)

RCT_EXPORT_METHOD(requestLocationWithReGeocode:(BOOL) withReGeocode) {
  [_manager requestLocationWithReGeocode:withReGeocode completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
    if(error){
      [self sendEventWithName:@"AMapGeolocation" body:@{
        @"errorCode":@(error.code),
        @"errorInfo": error.localizedDescription,
      }];
    }else{
       id json = [self json:location reGeocode:regeocode];
       [self sendEventWithName:@"AMapGeolocation" body:json];
    }
  }];
}
 // geolocation.js

/**
     * 获取当前位置信息
     *
     * 注意:使用该方法会停止持续定位
     *
     * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Geolocation/getCurrentPosition
     */
    Geolocation.getCurrentPosition = function (success, error, options) {
        if (options === void 0) { options = {}; }
        var listener = _1.addLocationListener(function (location) {
            if (location.errorCode) {
                error && error(new PositionError(location.errorCode, location.errorInfo, location));
                _1.stop();
                return listener.remove();
            }
            if (_1._options.locatingWithReGeocode && typeof location.address !== "string") {
                return;
            }
            success(toPosition(location));
            _1.stop();
            return listener.remove();
        });
        //_1.start();
        _1.requestLocationWithReGeocode(true);
    };
// index.js
**
 * 开始持续定位
 */
function start() {
    AMapGeolocation.start();
}
exports.start = start;

function requestLocationWithReGeocode() {
    AMapGeolocation.requestLocationWithReGeocode(true);
}
exports.requestLocationWithReGeocode = requestLocationWithReGeocode;

 

2、由于项目没有使用 cocoapod , 是通过手动导入 sdk 的。

https://lbs.amap.com/api/ios-sdk/guide/create-project/manual-configuration

 

3、使用 <MapView /> 时,开始会闪退。

后来发现是 iOS 项目里 AMap.bundle 忘记引入了。

 

4、iOS <MapView /> 地图始终定位在北京。

iOS 使用 region 属性,Android 使用 center 属性。

<MapView
                    style={[StyleSheet.absoluteFill, {
                        height: 446,
                        width: windowWidth
                    }]}
                    center={{
                        latitude: latitude ? latitude : 21,
                        longitude: longitude ? longitude : 119
                    }}
                    region={{
                        latitude: latitude ? latitude : 21,
                        longitude: longitude ? longitude : 119,
                        latitudeDelta: 0.05,
                        longitudeDelta: 0.05
                    }}
                    rotateEnabled={false}
                    tiltEnabled={false}
                    showsScale={true}
                    showsLocationButton={true}
                    locationEnabled
                    zoomLevel={14}
                    locationInterval={10000}
                    distanceFilter={10}
                    onStatusChangeComplete={(e) => {
                        // 拖拽完成, 返回地图中心位置
                        console.log('-------------1nativeEvent', e.region)
                        this._checkToQueryAgain(e.region);
                    }}
                    onLocation={(e) => {
                        // 定位完成, 返回定位位置(只有第一次成功定位才去查询列表)
                        if (this.isLocated) return;
                        this.locationLocal = e;
                        this.location = e;
                        this.isLocated = true
                        this._doLoadList()
                    }}
                />

 

5、iOS <MapView /> 地图没有获取当前坐标按钮。

目前 SDK 没提供,比如缩放按钮、定位按钮功能。如果需要 iOS 定位按钮,可以在地图上放置一个按钮,然后用 animateTo 进行移动。(https://github.com/qiuxiang/react-native-amap3d/issues/16

 

Jack088
粉丝 46
博文 754
码字总数 114015
作品 0
扬州
项目经理
私信 提问
加载中
请先登录后再评论。
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
3.9K
3
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
590
1
SQLServer实现split分割字符串到列

网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题。 先贴上某大牛写的s...

cwalet
2014/05/21
9.6K
0
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22

没有更多内容

加载失败,请刷新页面

加载更多

SPSSAU 付费数据研究报告服务

SPSSAU-付费数据分析报告服务(周老师提供) 本文分享自微信公众号 - SPSSAU(spssau)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起...

SPSSAU
2017/11/08
0
0
芋艿-springcloud gateway

http://www.iocoder.cn/Spring-Cloud/Spring-Cloud-Gateway/?github springcloud gateway 官方文档 https://cloud.spring.io/spring-cloud-gateway/reference/html/#gatewayfilter-factories......

Java搬砖工程师
23分钟前
5
0
新零售小程序制作流程

最近有很多小伙伴们都在观望新零售小程序,其实新零售小程序制作还是比较简单的,只要你能熟知以下的新零售小程序制作流程,你也可以制作出属于自己的小程序。下面木鱼小铺(www.muyu007.cn)...

木鱼小铺小程序1
24分钟前
5
0
bat增加自定义参数

#xxx.bat --tag=dev1010 --context=3 --cpu=3 --memory=3 --build=1 --update=1 --api-version=1 @echo off setlocal enabledelayedexpansion set COMMANSLINE="%" :STR_VISTOR for /f "toke......

_snake_
27分钟前
3
0
谷歌SEO推广团队,这样管理更高效!

如今不论是外贸企业还是专业的海外推广公司都会组建自己的Google SEO推广团队,可以更有效的做好网站SEO,但是要发挥谷歌SEO推广团队的最大效能,我们并不能随意的让团队成员听之任之,随波逐...

一尘SEO
28分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部