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();        
    }

    运行结果图:

  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/ktao/p/8258038.html
Copyright © 2011-2022 走看看