zoukankan      html  css  js  c++  java
  • 基于高德地图的位置服务开发(一)

     环境搭建+导入地图

    第一步,配置AndroidManifest.xml

    首先,声明权限

    //地图SDK(包含其搜索功能)需要的基础权限
         
    <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <!--允许程序读写手机状态和身份-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />     
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

    然后,设置高德Key

    在application标签中加入如下内容:

    <meta-data android:name="com.amap.api.v2.apikey" android:value="key">
    //开发者申请的key  
    </meta-data>

    如何获取Key?

    1. 获取SHA1
    2. 获取PakgeName

    具体操作参考高德官网

    第二步,导入开发包

    第三步,初始化地图容器

    MapView 是 AndroidView 类的一个子类, 用于在 Android View 中放置地图。 MapView 是地图容器。用 MapView 加载地图的方法与 Android 提供的其他 View 一样,具体的使用步骤如下:

    首先在布局xml文件中添加地图控件:

    <com.amap.api.maps2d.MapView
    
            android:id="@+id/map"
    
            android:layout_width="match_parent"
    
            android:layout_height="match_parent"/>

    在项目中使用地图的时候需要注意,需要合理的管理地图生命周期,这非常的重要。

    以下示例简述地图生命周期的管理:

    public class MainActivity extends Activity {
        MapView mMapView = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获取地图控件引用
           mMapView = (MapView) findViewById(R.id.map);
            //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
            mMapView.onCreate(savedInstanceState);
            //初始化地图控制器对象
            com.amap.api.maps2d.AMap aMap=null;
            if (aMap == null) {
                aMap = mMapView.getMap();
            }
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
            mMapView.onDestroy();
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
            mMapView.onPause();
        }
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
            mMapView.onSaveInstanceState(outState);
        }
    
    }

    第四步,显示地图

      AMap 类是地图的控制器类,用来操作地图。它所承载的工作包括:地图图层切换(如卫星图、黑夜地图)、改变地图状态(地图旋转角度、俯仰角、中心点坐标和缩放级别)、添加点标记(Marker)、绘制几何图形(Polyline、Polygon、Circle)、各类事件监听(点击、手势等)等,AMap 是地图 SDK 最重要的核心类,诸多操作都依赖它完成。

    在 MapView 对象初始化完毕之后,构造 AMap 对象。示例代码如下:

    //初始化地图控制器对象
    AMap aMap;
    if (aMap == null) {
        aMap = mapView.getMap();        
    }

    运行结果图:

  • 相关阅读:
    colemak,你用了吗?
    DELPHI一个对付内存汇漏的办法和技巧
    使用for in 循环数据集
    今天差点被断电搞死了,幸好IDE的备份救了我
    为什么继续选择DELPHI?
    无缘DELPHI的BUG
    DELPHI DOUBLE不解之迷
    失败的大牛事件委托,与我的委托
    2017-02-08 01:19:09 Scrapy: pk5_mylist
    2016-09-02 16:50:15 webqq 协议分析
  • 原文地址:https://www.cnblogs.com/ktao/p/8258038.html
Copyright © 2011-2022 走看看