• Android 腾讯位置服务地图简单使用



    概述


    本文参考腾讯位置服务官方文档:Android地图SDK | 腾讯位置服务 (qq.com)

    腾讯位置服务地图SDK

    腾讯位置服务地图SDK(Android)是一套基于Android 4.3及以上版本的多种地理位置服务的应用程序接口。 通过调用该接口,您可以轻松访问腾讯地图服务和数据,构建功能丰富、交互性强、契合各种行业场景的地图类应用程序。也可以在自己的Android应用中加入地图相关的功能,包括:地图展示、标注、绘制图形等。

    兼容性

    支持Android 4.3及以上系统。

    创建工程

    腾讯位置服务链接

    获取Appkey

    Appkey

    配置AppKey

    在AndroidManifest.xml的application标签中配置key

     <application>
            ...
            <meta-data android:name="TencentMapSDK" android:value="您申请的Key" />
        </application>
    
    • 1
    • 2
    • 3
    • 4

    配置工程

    方法1:主动添加SDK

    1. 将jar放在libs目录下
      放置jar包

    2. 右键该jar包,选择Add AS Library,弹出窗口选择确定
      Create_Library

    3. 变成下图所示为导入成功
      jar_success

    4. 将jni目录下的所有文件按照原目录格式,拷贝到AndroidStudio项目对应的 app/src/main/jniLibs/ 目录下:
      local_jni
      import_so
      方法2:Gradle配置maven或jcenter仓库集成SDK
      在 Project 的 build.gradle 文件中配置 repositories,添加 maven 或 jcenter仓库地址。AndroidStudio 默认会在 Project 的 build.gradle 为所有module自动添加 jcenter 仓库地址,如果已存在,则不需要重复添加:

    
    buildscript {
       
        repositories {
       
            google()
            jcenter()
            mavenCentral()
        }
        dependencies {
       
            classpath 'com.android.tools.build:gradle:版本'
        }
    }
    //向所有模块配置仓库:
    allprojects {
       
        repositories {
       
            google()
            jcenter()
            mavenCentral()
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在 build.gradle 文件的 dependencies 中增加配置

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.tencent.map:tencent-map-vector-sdk:版本号'
    
    • 1
    • 2

    代码混淆

    如果需要混淆工程,在module里找到proguard-rules.pro文件,添加如下混淆脚本:

    -keep public class com.tencent.lbssearch.** {
       *;}
    -keep public class com.tencent.map.** {
       *;}
    -keep public class com.tencent.mapsdk.** {
       *;}
    -keep public class com.tencent.tencentmap.**{
       *;}
    -keep public class com.tencent.tmsbeacon.**{
       *;}
    -keep public class com.tencent.tmsbeacon.**{
       *;}
    -dontwarn com.qq.**
    -dontwarn com.tencent.**
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    权限配置

    地图SDK需要使用网络,访问硬件存储等系统权限,在AndroidManifest.xml文件里,添加如下权限:

    请在manifest文件下配置如下权限:

    
    
    <uses-permission android:name="android.permission.INTERNET"/>
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    地图

    基础地图

    地图视图:

    • MApView:普通地图视图
    • TextureMapView:纹理化地图视图
    • MapRenderLayer:地图渲染层容器
      差异:
    视图类型 内部实现 视图动画 性能 ListView显示 多实例
    MapView GLSurfaceView 不支持 不流畅 支持
    TextureMapView TextureView 支持 不流畅 支持
    MapRenderLayer Surface+GLThread 外部控制 外部控制 流畅 支持

    绑定地图生命周期:创建地图视图后,需要绑定应用生命周期,以保障地图在应用的不同生命周期中能正确处理显示和刷新逻辑。

    应用生命周期 地图生命周期
    onStart() onStart()
    onResume() onResume()
    onPause() onPause()
    onStop() onStop()
    onDestory() onDestory()

    基础地图布局

    
    <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=".BaseMapActivity">
    
        
        <com.tencent.tencentmap.mapsdk.maps.TextureMapView
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    androidx.constraintlayout.widget.ConstraintLayout>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    创建基础地图的activity

    public class BaseMapActivity extends AppCompatActivity {
       
        private TextureMapView mapView;
        private TencentMap tencentMap;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
       
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_base_map);
    
            TencentMapInitializer.setAgreePrivacy(true);
    
            mapView = findViewById(R.id.mapView);
    
            tencentMap = mapView.getMap();
        }
    
        /**
         * mapview的生命周期管理
         */
        @Override
        protected void onStart() {
       
            super.onStart();
            mapView.onStart();
        }
    
        @Override
        protected void onResume() {
       
            super.onResume();
            mapView.onResume();
        }
    
        @Override
        protected void onPause() {
       
            super.onPause();
            mapView.onPause();
        }
    
        @Override
        protected void onStop() {
       
            super.onStop();
            mapView
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    到底什么是“星闪”?
    【GIT版本控制管理】第4章 基本的Git概念
    解决python3 requests post 报unicode问题
    浮点数类型讲解
    LT-mapper,LT-removert代码运行与学习
    大数据1.5 使用Vim编辑器
    Anaconda和PyCharm比较
    MindSpore:一文带你入门虚拟遗憾最小化CFR算法
    小知识·Git常用命令
    Ant Design Modal模态框添加类名后样式不生效
  • 原文地址:https://blog.csdn.net/fjnu_se/article/details/128163272