开发者社区> shy丶gril> 正文

Android--高德地图自动定位

简介:
+关注继续查看

和其他地图一样,都要先去官网注册成为开发者,然后获取Key。下面直接上代码。

效果图:


[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.example.gaodemap;  
  2.   
  3.   
  4. import com.amap.api.maps.AMap;  
  5. import com.amap.api.maps.CameraUpdate;  
  6. import com.amap.api.maps.CameraUpdateFactory;  
  7. import com.amap.api.maps.MapView;  
  8. import com.amap.api.maps.model.LatLng;  
  9. import com.amap.api.maps.model.Marker;  
  10. import com.amap.api.maps.model.MarkerOptions;  
  11.   
  12. import android.app.Activity;  
  13. import android.content.Context;  
  14. import android.location.Location;  
  15. import android.location.LocationListener;  
  16. import android.location.LocationManager;  
  17. import android.os.Bundle;  
  18. import android.widget.CompoundButton;  
  19. import android.widget.ToggleButton;  
  20.   
  21. public class MainActivity extends Activity  {  
  22.   
  23.     private MapView mMapView;  
  24.     private AMap aMap;  
  25.     private MapView mapView;  
  26.     private LocationManager locationManager;  
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_main);  
  31.           
  32.         locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
  33.           
  34.         mMapView = (MapView) findViewById(R.id.map);  
  35.         mMapView.onCreate(savedInstanceState);  
  36.         init();  
  37.         //GPRS提供的定位信息改变  
  38.         locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3008new LocationListener() {  
  39.               
  40.             @Override  
  41.             public void onStatusChanged(String provider, int status, Bundle extras) {  
  42.                 // TODO Auto-generated method stub  
  43.                   
  44.             }  
  45.               
  46.             @Override  
  47.             public void onProviderEnabled(String provider) {  
  48.                 // 使用GPRS提供的定位信息来更新位置  
  49.                 updatePosition(locationManager.getLastKnownLocation(provider));  
  50.             }  
  51.               
  52.             @Override  
  53.             public void onProviderDisabled(String provider) {  
  54.                 // TODO Auto-generated method stub  
  55.                   
  56.             }  
  57.               
  58.             @Override  
  59.             public void onLocationChanged(Location location) {  
  60.                 // TODO Auto-generated method stub  
  61.                 updatePosition(location);  
  62.             }  
  63.         });  
  64.       
  65.           
  66.         ToggleButton tb = (ToggleButton) findViewById(R.id.tb);  
  67.         tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){  
  68.   
  69.             @Override  
  70.             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {  
  71.                 // TODO Auto-generated method stub  
  72.                 if(isChecked){  
  73.                     aMap.setMapType(AMap.MAP_TYPE_SATELLITE);  
  74.                 }else{  
  75.                     aMap.setMapType(AMap.MAP_TYPE_NORMAL);  
  76.                 }  
  77.             }  
  78.               
  79.         });  
  80.     }  
  81.   
  82.     //初始化AMap对象  
  83.     private void init(){  
  84.         if(aMap == null){  
  85.             aMap = mMapView.getMap();  
  86.         }  
  87.     }  
  88.     @Override  
  89.     protected void onDestroy() {  
  90.         // TODO Auto-generated method stub  
  91.         super.onDestroy();  
  92.         mMapView.onDestroy();  
  93.     }  
  94.     @Override  
  95.     protected void onPause() {  
  96.         // TODO Auto-generated method stub  
  97.         super.onPause();  
  98.         mMapView.onPause();  
  99.     }  
  100.     @Override  
  101.     protected void onResume() {  
  102.         // TODO Auto-generated method stub  
  103.         super.onResume();  
  104.         mMapView.onResume();  
  105.     }  
  106.     @Override  
  107.     protected void onSaveInstanceState(Bundle outState) {  
  108.         // TODO Auto-generated method stub  
  109.         super.onSaveInstanceState(outState);  
  110.         mMapView.onSaveInstanceState(outState);  
  111.     }  
  112.   
  113.     private void updatePosition(Location location){  
  114.         LatLng pos = new LatLng(location.getLatitude(), location.getLongitude());  
  115.         //创建一个设置经纬度的CameraUpdate  
  116.         CameraUpdate cu = CameraUpdateFactory.changeLatLng(pos);  
  117.         //更新地图的显示区域  
  118.         aMap.moveCamera(cu);  
  119.         //清除所有的Marker等覆盖物  
  120.         aMap.clear();  
  121.         //创建一个MarkerOptions对象  
  122.         MarkerOptions markOptions = new MarkerOptions();  
  123.         markOptions.position(pos);  
  124.         //添加MarkerOptions(实际上是添加Marker)  
  125.         Marker marker = aMap.addMarker(markOptions);  
  126.     }  
  127.       
  128. }  


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.      >  
  6.   
  7.     <com.amap.api.maps.MapView  
  8.         android:id="@+id/map"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent">  
  11.     </com.amap.api.maps.MapView>  
  12.   
  13.     <ToggleButton   
  14.         android:id="@+id/tb"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:gravity="top|right"  
  18.         android:textOff="普通地图"  
  19.         android:textOn="卫星地图"  
  20.         android:checked="false"  
  21.         android:background="@android:color/transparent"  
  22.         />  
  23.     <LinearLayout   
  24.         android:layout_width="fill_parent"  
  25.         android:layout_height="wrap_content"  
  26.         android:layout_gravity="bottom"  
  27.         android:orientation="horizontal"  
  28.         >  
  29.         <Button   
  30.             android:id="@+id/near"  
  31.             android:layout_width="wrap_content"  
  32.             android:layout_height="wrap_content"  
  33.             android:text="附近"  
  34.             android:layout_weight="1"  
  35.             android:background="@android:color/transparent"  
  36.             />  
  37.         <Button   
  38.             android:id="@+id/route"  
  39.             android:layout_width="wrap_content"  
  40.             android:layout_height="wrap_content"  
  41.             android:text="路线"  
  42.             android:background="@android:color/transparent"  
  43.             android:layout_weight="1"  
  44.             />  
  45.         <Button   
  46.             android:id="@+id/my"  
  47.             android:layout_width="wrap_content"  
  48.             android:layout_height="wrap_content"  
  49.             android:text="我的"  
  50.             android:background="@android:color/transparent"  
  51.             android:layout_weight="1"  
  52.             />  
  53.     </LinearLayout>  
  54. </FrameLayout>  



转载:http://blog.csdn.net/chaoyu168/article/details/51375159

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42950733          BUG 一:padding导致其他控件宽度计算错误             今天在写项目的一个布局时,用到了最常用的相对布局属性padding:在一个纵向容器里,给其中的各个子元素设置了padding属性来做相对布局。
1169 0
Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(四)
Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读
59 0
IOS地图定位坐标偏差解决方案(实战通过)
--------------------------------------------------------------------- 很抱歉,本篇文章的算法经过实践证明有问题; 正确的转码算法地址见以下两个链接: http://www.
1056 0
C#中通过Selenium定位<a>标签的问题
刚才在QQ群里看到有人提问,如何实现退出百度登录问题。那么之所以会有这个问题,主要是因为这个元素,如下图所示,是无法直接定位到的: 经过研究发现,要想定位到这种元素,拢共分两步: 第一步,把鼠标移到能使目标元素显示在页面上的前置元素上; 第二步,通过xpath对目标标签元素进行定位。
1239 0
+关注
1876
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载