美文网首页
React Native开发使用react-native-bai

React Native开发使用react-native-bai

作者: Loki_ | 来源:发表于2019-12-05 16:24 被阅读0次

    项目中使用定位功能获取百度坐标,使用插件react-native-baidumap-sdk

    https://github.com/qiuxiang/react-native-baidumap-sdk

    问题一:安装好插件后,运行react-native run-android报错

    * What went wrong:
    The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
    The following dependencies do not satisfy the required version:
    project ':react-native-baidumap-sdk' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.41

    报错截图

    解决方法:

    重新安装,link

    安装时使用react-native-baidumap-sdk@next这个版本

    npm install react-native-baidumap-sdk@next

    参考:

    https://github.com/qiuxiang/react-native-baidumap-sdk/issues/164

    问题二、

    e: /Users/singcloud/Desktop/ReactNative/yunxiangsq/node_modules/react-native-baidumap-sdk/lib/android/src/main/java/cn/qiuxiang/react/baidumap/Utils.kt: (52, 56): Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type ReadableMap?

    报错截图

    解决方法:

    按照报错文件和报错位置修改文件

    1、Utils.kt

    fun ReadableArray.toLatLngList(): List<LatLng> {

        return (0..(this.size() - 1)).map { this.getMap(it)!!.toLatLng() }

    }

    2、BaiduMapHeatMap.kt

    val intensity = if (it!!.hasKey("intensity")) it!!.getDouble("intensity") else 0.0

    3、BaiduMapView.kt

    fun setStatus(args: ReadableArray?) {

            val target = args!!.getMap(0)

            val duration = args.getInt(1)

            val mapStatusBuilder = MapStatus.Builder()

            if (target!!.hasKey("center")) {

                mapStatusBuilder.target(target!!.getMap("center")!!.toLatLng())

            }

            if (target!!.hasKey("zoomLevel")) {

                mapStatusBuilder.zoom(target!!.getDouble("zoomLevel").toFloat())

            }

            if (target!!.hasKey("overlook")) {

                mapStatusBuilder.overlook(target!!.getDouble("overlook").toFloat())

            }

            if (target!!.hasKey("rotation")) {

                mapStatusBuilder.rotate(target!!.getDouble("rotation").toFloat())

            }

            if (target!!.hasKey("point")) {

                val point = target!!.getMap("point")!!.toPoint()

                mapStatusBuilder.target(map.projection.fromScreenLocation(point))

            }

            if (target!!.hasKey("region")) {

                setStatus(MapStatusUpdateFactory.newLatLngBounds(

                    target!!.getMap("region")!!.toLatLngBounds()), duration)

            } else {

                setStatus(MapStatusUpdateFactory.newMapStatus(mapStatusBuilder.build()), duration)

            }

        }

    4、其他文件就是这样改一下  就可以使用了

    参考:

    https://github.com/qiuxiang/react-native-baidumap-sdk/issues/179

    https://blog.csdn.net/u010296640/article/details/80421135

    相关文章

      网友评论

          本文标题:React Native开发使用react-native-bai

          本文链接:https://www.haomeiwen.com/subject/xbiewctx.html