Android项目接入MapLibre Native的简单案例

MapLibre Native 是一个免费且开源的库,用于在各种平台上的应用程序和桌面应用程序中发布地图。由于 GPU 加速的矢量瓦片渲染,地图的快速显示成为可能。

MapLibre Native 安卓集成文档

1,module级gradle中配置对应插件

dependencies {

    implementation 'org.maplibre.gl:android-sdk:11.0.0'
}

2,settings.gradle中配置一下依赖资源的代理加速

没有网络问题太慢问题忽略此步骤

pluginManagement {
	repositories {
		maven {
			url 'https://maven.aliyun.com/repository/public/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/google/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/jcenter/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/central/'
		}
		google()
		mavenCentral()
		gradlePluginPortal()
	}
}
dependencyResolutionManagement {
	repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
	repositories {
		maven {
			url 'https://maven.aliyun.com/repository/public/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/google/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/jcenter/'
		}
		maven {
			url 'https://maven.aliyun.com/repository/central/'
		}
		google()
		mavenCentral()
	}
}

3,在xml布局文件中添加对应组件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


        <org.maplibre.android.maps.MapView
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

</androidx.constraintlayout.widget.ConstraintLayout>

4,添加地图对应加载逻辑

官方默认使用的kotlin,暂未找到java版本的,我们也用kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import org.maplibre.android.MapLibre


import org.maplibre.android.maps.MapView


class MainActivity : AppCompatActivity() {

    // Declare a variable for MapView
    private lateinit var mapView: MapView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 初始化
        MapLibre.getInstance(this)
        val inflater = LayoutInflater.from(this)
        val rootView = inflater.inflate(R.layout.activity_main, null)
        setContentView(rootView)

        // Init the MapView
        // 绑定节点
        mapView = rootView.findViewById(R.id.mapView)
        // 加载数据
        mapView.getMapAsync { map ->
            map.setStyle("https://demotiles.maplibre.org/style.json")
//            map.cameraPosition = CameraPosition.Builder().Buildertarget(LatLng(0.0,0.0)).zoom(1.0).build()
        }
    }

    override fun onStart() {
        super.onStart()
        mapView.onStart()
    }

    override fun onResume() {
        super.onResume()
        mapView.onResume()
    }

    override fun onPause() {
        super.onPause()
        mapView.onPause()
    }

    override fun onStop() {
        super.onStop()
        mapView.onStop()
    }

    override fun onLowMemory() {
        super.onLowMemory()
        mapView.onLowMemory()
    }

    override fun onDestroy() {
        super.onDestroy()
        mapView.onDestroy()
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        mapView.onSaveInstanceState(outState)
    }
}

5,如遇打包报错的异常情况

如果出现报错类似的错误

Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.7.0, expected version is 1.9.0.

注意切换当前项目项目级gradle里面的的kotlin到对应提示的版本就行。
id ‘org.jetbrains.kotlin.android’ version ‘1.9.0’ apply false 的作用主要是声明和指定Kotlin Android Gradle插件的版本

plugins {

    id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
}

有空继续更新…

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值