(转)高德地图之地图篇----->定位的蓝点、添加Marker

原地址:http://blog.csdn.net/u013210620/article/details/47701717


上一篇已经写了如何搭建高德地图的步骤,这里省略了,直接贴自己代码

*************************************定位的小蓝点***********************************************

先看配置文件

AndroidManifest.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.example.homegode"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="18"  
  9.         android:targetSdkVersion="18" />  
  10.   
  11.     <uses-permission android:name="android.permission.INTERNET" />  
  12.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  13.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  14.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  15.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  16.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  17.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  18.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  19.     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />  
  20.     <uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  21.   
  22.     <application  
  23.         android:allowBackup="true"  
  24.         android:icon="@drawable/ic_launcher"  
  25.         android:label="@string/app_name"  
  26.         android:theme="@style/AppTheme" >  
  27.         <meta-data  
  28.             android:name="com.amap.api.v2.apikey"  
  29.             android:value="86689cc69abe78e7104090f285eab15a" />  
  30.   
  31.         <!-- 启动的activity不是固定的 -->  
  32.         <activity  
  33.             android:name=".MainActivity"  
  34.             android:label="@string/app_name" >  
  35.             <intent-filter>  
  36.                 <action android:name="android.intent.action.MAIN" />  
  37.   
  38.                 <category android:name="android.intent.category.LAUNCHER" />  
  39.             </intent-filter>  
  40.         </activity>  
  41.     </application>  
  42.   
  43. </manifest>  
activity_main.xml

[html]  view plain  copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context="com.example.homegode.MainActivity" >  
  6.   
  7.     <com.amap.api.maps.MapView  
  8.         android:id="@+id/main_mapView"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent" />  
  11.   
  12.    
  13.   
  14. </RelativeLayout>  

MainActivity

[java]  view plain  copy
  1. package com.example.homegode;  
  2.   
  3. import android.app.Activity;  
  4. import android.graphics.Color;  
  5. import android.location.Location;  
  6. import android.os.Bundle;  
  7.   
  8. import com.amap.api.location.AMapLocation;  
  9. import com.amap.api.location.AMapLocationListener;  
  10. import com.amap.api.location.LocationManagerProxy;  
  11. import com.amap.api.location.LocationProviderProxy;  
  12. import com.amap.api.maps.AMap;  
  13. import com.amap.api.maps.LocationSource;  
  14. import com.amap.api.maps.MapView;  
  15. import com.amap.api.maps.model.BitmapDescriptorFactory;  
  16. import com.amap.api.maps.model.MyLocationStyle;  
  17.   
  18. /** 
  19.  * AMapV1地图中简单介绍显示定位小蓝点 思路是界面展现一个mapView, 加载那个蓝色图标,并且设置后边圆圈的属性, 
  20.  * 然后设置定位资源。如果不设置此定位资源则定位按钮不可点击。并且实现activate激活定位 
  21.  *  
  22.  * 之后mAMapLocationManager.requestLocationData( 
  23.  * LocationProviderProxy.AMapNetwork, 2000, 10, this); 
  24.  * 监听,并且在onLocationChanged这里实现回调方法 
  25.  */  
  26. public class MainActivity extends Activity implements LocationSource,  
  27.         AMapLocationListener {  
  28.     private AMap aMap;  
  29.     private MapView mapView;  
  30.     private OnLocationChangedListener mListener;  
  31.     private LocationManagerProxy mAMapLocationManager;  
  32.   
  33.     @Override  
  34.     protected void onCreate(Bundle savedInstanceState) {  
  35.         super.onCreate(savedInstanceState);  
  36.         setContentView(R.layout.activity_main);  
  37.         mapView = (MapView) findViewById(R.id.main_mapView);  
  38.         mapView.onCreate(savedInstanceState);// 此方法必须重写  
  39.         init();  
  40.     }  
  41.   
  42.     /** 
  43.      * 初始化AMap对象 
  44.      */  
  45.     private void init() {  
  46.         if (aMap == null) {  
  47.             aMap = mapView.getMap();  
  48.             setUpMap();  
  49.         }  
  50.     }  
  51.   
  52.     /** 
  53.      * 设置一些amap的属性 
  54.      */  
  55.     private void setUpMap() {  
  56.         // 自定义系统定位小蓝点  
  57.         MyLocationStyle myLocationStyle = new MyLocationStyle();  
  58.         myLocationStyle.myLocationIcon(BitmapDescriptorFactory  
  59.                 .fromResource(R.drawable.location_marker));// 设置小蓝点的图标  
  60.   
  61.         myLocationStyle.strokeColor(Color.BLACK);// 设置圆形的边框颜色  
  62.         myLocationStyle.radiusFillColor(Color.argb(10000180));// 设置圆形的填充颜色  
  63.         myLocationStyle.strokeWidth(1.0f);// 设置圆形的边框粗细  
  64.         aMap.setMyLocationStyle(myLocationStyle);  
  65.   
  66.         aMap.setLocationSource(this);// 设置定位资源。如果不设置此定位资源则定位按钮不可点击。并且实现activate激活定位,停止定位的回调方法  
  67.         aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示  
  68.         aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false  
  69.     }  
  70.   
  71.       
  72.     /** 
  73.      * 定位成功后回调函数 
  74.      */  
  75.     @Override  
  76.     public void onLocationChanged(AMapLocation aLocation) {  
  77.         if (mListener != null && aLocation != null) {  
  78.             mListener.onLocationChanged(aLocation);// 显示系统小蓝点  
  79.         }  
  80.     }  
  81.   
  82.     /** 
  83.      * 激活定位 
  84.      */  
  85.     @Override  
  86.     public void activate(OnLocationChangedListener listener) {  
  87.         mListener = listener;  
  88.         if (mAMapLocationManager == null) {  
  89.             mAMapLocationManager = LocationManagerProxy.getInstance(this);  
  90.             /* 
  91.              * mAMapLocManager.setGpsEnable(false); 
  92.              * 1.0.2版本新增方法,设置true表示混合定位中包含gps定位,false表示纯网络定位,默认是true Location 
  93.              * API定位采用GPS和网络混合定位方式 
  94.              * ,第一个参数是定位provider,第二个参数时间最短是2000毫秒,第三个参数距离间隔单位是米,第四个参数是定位监听者 
  95.              */  
  96.             mAMapLocationManager.requestLocationData(  
  97.                     LocationProviderProxy.AMapNetwork, 200010this);  
  98.         }  
  99.     }  
  100.   
  101.     /** 
  102.      * 停止定位 
  103.      */  
  104.     @Override  
  105.     public void deactivate() {  
  106.         mListener = null;  
  107.         if (mAMapLocationManager != null) {  
  108.             mAMapLocationManager.removeUpdates(this);  
  109.             mAMapLocationManager.destroy();  
  110.         }  
  111.         mAMapLocationManager = null;  
  112.     }  
  113.       
  114.     /** 
  115.      * 方法必须重写 
  116.      */  
  117.     @Override  
  118.     protected void onResume() {  
  119.         super.onResume();  
  120.         mapView.onResume();  
  121.     }  
  122.   
  123.     /** 
  124.      * 方法必须重写 
  125.      */  
  126.     @Override  
  127.     protected void onPause() {  
  128.         super.onPause();  
  129.         mapView.onPause();  
  130.         deactivate();  
  131.     }  
  132.   
  133.     /** 
  134.      * 方法必须重写 
  135.      */  
  136.     @Override  
  137.     protected void onSaveInstanceState(Bundle outState) {  
  138.         super.onSaveInstanceState(outState);  
  139.         mapView.onSaveInstanceState(outState);  
  140.     }  
  141.   
  142.     /** 
  143.      * 方法必须重写 
  144.      */  
  145.     @Override  
  146.     protected void onDestroy() {  
  147.         super.onDestroy();  
  148.         mapView.onDestroy();  
  149.     }  
  150.   
  151.     /** 
  152.      * 此方法已经废弃 
  153.      */  
  154.     @Override  
  155.     public void onLocationChanged(Location location) {  
  156.     }  
  157.   
  158.     @Override  
  159.     public void onProviderDisabled(String provider) {  
  160.     }  
  161.   
  162.     @Override  
  163.     public void onProviderEnabled(String provider) {  
  164.     }  
  165.   
  166.     @Override  
  167.     public void onStatusChanged(String provider, int status, Bundle extras) {  
  168.     }  
  169.   
  170.   
  171. }  


******************************添加marker******************************************

[java]  view plain  copy
  1. package com.example.homegode;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. import com.amap.api.location.LocationManagerProxy;  
  7. import com.amap.api.maps.AMap;  
  8. import com.amap.api.maps.LocationSource.OnLocationChangedListener;  
  9. import com.amap.api.maps.MapView;  
  10. import com.amap.api.maps.model.BitmapDescriptorFactory;  
  11. import com.amap.api.maps.model.LatLng;  
  12. import com.amap.api.maps.model.Marker;  
  13. import com.amap.api.maps.model.MarkerOptions;  
  14.   
  15. public class MainActivity extends Activity {  
  16.     private AMap aMap;  
  17.     private MapView mapView;  
  18.     private OnLocationChangedListener mListener;  
  19.     private LocationManagerProxy mAMapLocationManager;  
  20.   
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.         mapView = (MapView) findViewById(R.id.main_mapView);  
  26.         mapView.onCreate(savedInstanceState);// 此方法必须重写  
  27.         if (aMap == null) {  
  28.             aMap = mapView.getMap();  
  29.         }  
  30.         aMap.setTrafficEnabled(true);//开始实时交通  
  31.         aMap.setMapType(AMap.MAP_TYPE_NORMAL);//有普通,卫星,夜间模式  
  32.           
  33.         MarkerOptions markerOptions = new MarkerOptions();  
  34.         //添加一个位置--经度,维度---marker对应一个markerOptions,用来设置marker的属性等  
  35.         markerOptions.position(new LatLng(39.90403116.407525));  
  36.         //添加图标  
  37.         markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker));;  
  38.         //添加marker  
  39.         Marker marker = aMap.addMarker(markerOptions);  
  40.           
  41.           
  42.           
  43.     }  
  44.   
  45.   
  46.   
  47.     /** 
  48.      * 方法必须重写 
  49.      */  
  50.     @Override  
  51.     protected void onResume() {  
  52.         super.onResume();  
  53.         mapView.onResume();  
  54.     }  
  55.   
  56.     /** 
  57.      * 方法必须重写 
  58.      */  
  59.     @Override  
  60.     protected void onPause() {  
  61.         super.onPause();  
  62.         mapView.onPause();  
  63.     }  
  64.   
  65.     /** 
  66.      * 方法必须重写 
  67.      */  
  68.     @Override  
  69.     protected void onSaveInstanceState(Bundle outState) {  
  70.         super.onSaveInstanceState(outState);  
  71.         mapView.onSaveInstanceState(outState);  
  72.     }  
  73.   
  74.     /** 
  75.      * 方法必须重写 
  76.      */  
  77.     @Override  
  78.     protected void onDestroy() {  
  79.         super.onDestroy();  
  80.         mapView.onDestroy();  
  81.     }  
  82.   
  83.       
  84. }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值