Android地图定位开发技术汇总

Android地图定位开发技术汇总

由于课程需要,我查询了一些Android中的地图定位开发技术,该技术在理论课日常练习中应用到了模拟高德地图APP开发中,同时也运用到了实验课结业大作业——小农夫APP中。下面就该技术的核心内容、部分问题解集方案进行记录。希望可以供以后参考。

一、新技术简介

该项技术应用到了ArcGIS Runtime SDKfor  Android,2017年初ArcGIS 10.5正式的发布,经历了几个版本ArcGIS 10.5已经成为一个智能的以web问中心的地理平台,WebGIS也越来越深入身心,随着ArcGIS的不断更新,慢慢演化出了跨平台开发产品ArcGIS Runtime。ArcGIS Runtime 100.0正式发布,新品具备更多能力及特性:支持跨平台跨设备,如Windows、Linux、Mac、iOS、Android等;采用全新的底层架构设计,能够所有SDK采用一致的功能和API;与Web GIS无缝对接,开发者可随时随地使用、制作、编辑平台资源;增强的3D体验,倾斜摄影、精细模型等全支持,并支持三维符号化、三维路径分析等;强大离线能力,支持移动地图包、底图切片包、及要素服务离线同步等多种离线模式;支持直连SDE数据库、本地栅格数据源等。

围绕在ArcGIS地理平台的Apps,特别是开发定制部分,很大程度上落到了ArcGIS Runtime的肩膀上。ArcGIS Runtime为新一代的Web GIS模式打造,其操作对象是web map和web scene模型,涵盖CS桌面程序开发和移动开发

ArcGIS Runtime常见功能:

1、支持在线数据和离线数据。

2、在有网络连通的情况下,可以使用ArcGIS GIS Server、ArcGIS 
Online等在线资源;如果在断网的情况下,可以使用本地数据包,包括MPK、GPK、GCPK等。

3、地图(2D)显示,使用新的渲染引擎,大大提高了地图浏览的速度。

4、地图(3D)显示。

5、符号化展示。

6、GPS位置追踪。可连接GPS设备实时定位追踪,也支持本地GPS文件位置回放。

7、支持数据编辑。

8、支持地理处理工具。

9、支持地理编码和反地理编码。

10、支持空间分析、网络分析及3D分析。

11、支持Windows、Linux、Mac OS X桌面环境。

12、支持Android、iOS和 Windows Phone等移动设备。

13、提供编辑同步功能。

14、进一步加强离线的数据分析(网络分析,地理编码分析和查询)。

15、支持静态和动态模式的符号图层(Graphics overlays)。

16、此外还将提供更多的离线的分析,对本地矢量数据和栅格数据的支持,以及3D功能。

17、支持本地文件地理数据库。

18、集成Portal for ArcGIS图层。

二、开发环境

1、基础GIS软件环境

基础GIS软件环境是为了给安卓开发准备地图资源(如果有在线的地图资源使用,可以忽略此部分。 

ArcGIS桌面软件高级版(ArcGIS Desktop 10.5 Advanced-S) 
ArcGIS企业级平台软件高级版套件(ArcGIS Enterprise 10.5 Advanced 4 Cores)

下载地址:http://pan.baidu.com/s/1qYuc6jM

2、参考前面的博文,配置Android开发环境。

三、创建一个地图应用程序

1、创建一个新工程(File > New > New Project) 
2
、输入工程名:(随意取,但是要遵守命名规则)
3
、修改Company Domain 和 Project Location 
4
、修改Package name 
5
、点击下一步,勾选“Phone and Tablet” 
6
、选择合适的SDK 

7、点击下一步,选择“Empty Activity” 
8
、点击下一步,输入Activity Name。 
9
、输入Layout Name(可采用默认)。 
10
、单击完成,等待工程初始化完成。 

11、于(project)的build.gradle文件中在相应的地方添加:url ‘https://esri.bintray.com/arcgis

代码:buildscript {

    repositories {

        jcenter()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:2.3.1'

    }

}

 

allprojects {

    repositories {

        jcenter()

        // Add the Esri public Bintray Mavenrepository

        maven {

            url 'https://esri.bintray.com/arcgis'

        }

    }

}

 

task clean(type: Delete) {

    delete rootProject.buildDir

}

12、于appmodule的build.gradle文件中在相应的地方添加: 
compile ‘com.esri.arcgisruntime:arcgis-Android:100.0.0’

代码:apply plugin: 'com.android.application'

android {

   compileSdkVersion 25

   buildToolsVersion "25.0.2"

   defaultConfig {

       applicationId "esrichina.hymn.setmapinitiallocation"

       minSdkVersion 23

       targetSdkVersion 25

       versionCode 1

       versionName "1.0"

       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

   buildTypes {

       release {

           minifyEnabled false

           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

       }

    }

}

dependencies {

   compile 'com.esri.arcgisruntime:arcgis-android:100.0.0'

   compile fileTree(include: ['*.jar'], dir: 'libs')

   androidTestCompile

    ('com.android.support.test.espresso:espresso-core:2.2.2', {

 'com.android.support', module: 'support-annotations'

   })

   compile 'com.android.support:appcompat-v7:25.3.1'

   compile 'com.android.support.constraint:constraint-layout:1.0.0'

   testCompile 'junit:junit:4.12'

}

13、在android Studio toolbar中,单击 “Sync Project with Gradle Files” (要有好网络,否则等待漫长的下载)

14、在“Androidproject view”中打开“AndroidManifest.xml”(app > manifests) 
添加: 

<?xml version="1.0"encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

   package="esrichina.hymn.setmapinitiallocation">

    <uses-permissionandroid:name="android.permission.INTERNET" />

    <uses-featureandroid:glEsVersion="0x00020000" android:required="true"/>

    <application

       android:allowBackup="true"

       android:icon="@mipmap/ic_launcher"

       android:label="@string/app_name"

       android:roundIcon="@mipmap/ic_launcher_round"

       android:supportsRtl="true"

       android:theme="@style/AppTheme">

       <activityandroid:name=".MainActivity">

           <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

                <categoryandroid:name="android.intent.category.LAUNCHER" />

           </intent-filter>

       </activity>

    </application>

</manifest>

15、在Layout(res > layout:activity_main.xml)文件中添加MapView。

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.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="esrichina.hymn.setmapinitiallocation.MainActivity">

    <com.esri.arcgisruntime.mapping.view.MapView

        android:id="@+id/mapView"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent" >

    </com.esri.arcgisruntime.mapping.view.MapView>

</android.support.constraint.ConstraintLayout>

16、初始化MapView。进入“MainActivity”(Java > [package name]),于相应处编码。

package esrichina.hymn.setmapinitiallocation;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import com.esri.arcgisruntime.mapping.ArcGISMap;

import com.esri.arcgisruntime.mapping.Basemap;

import com.esri.arcgisruntime.mapping.view.MapView;

public class MainActivityextends AppCompatActivity {

    private MapView mMapView;

    @Override

    protected void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mMapView = (MapView) findViewById(R.id.mapView);

        ArcGISMap map = new ArcGISMap

                (Basemap.Type.TOPOGRAPHIC, 34.056295, -117.195800, 16);

        mMapView.setMap(map);

    }

}

17、运行程序,选择设备,得到结果。

猜你喜欢

转载自blog.csdn.net/Chrisliuluo/article/details/73253833