优定义网

Android百度地图开发之显示当前位置地图

朴子萱 发表于 2018-6-11 20:32:47 | 显示全部楼层 |阅读模式

步骤:

1、获取当前的经纬度

2、显示地图

3、改变地图中心的经纬度

1、获取当前的经纬度

请参考网址:

  1. https://www.youdingyi.com/thread-4024-1-1.html
复制代码

2、显示地图

请参考网址:

  1. https://www.youdingyi.com/thread-4025-1-1.html
复制代码

3、改变地图中心的经纬度:

前台xml代码:

  1. ......
  2. <com.baidu.mapapi.map.MapView
  3.         android:id="@+id/map_view"
  4.         android:layout_width="match_parent"
  5.         android:layout_height="match_parent"
  6.         android:clickable="true" >
  7.     </com.baidu.mapapi.map.MapView>
  8. ......
复制代码

后台参考代码(只提供java代码,其他代码与第2个网址中的相同):

  1. package com.example.baidumaptest;
  2. import java.util.List;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.location.Location;
  6. import android.location.LocationListener;
  7. import android.location.LocationManager;
  8. import android.os.Bundle;
  9. import android.widget.Toast;
  10. import com.baidu.mapapi.SDKInitializer;
  11. import com.baidu.mapapi.map.BaiduMap;
  12. import com.baidu.mapapi.map.MapStatusUpdate;
  13. import com.baidu.mapapi.map.MapStatusUpdateFactory;
  14. import com.baidu.mapapi.map.MapView;
  15. import com.baidu.mapapi.map.MyLocationData;
  16. import com.baidu.mapapi.model.LatLng;
  17. public class MainActivity extends Activity {
  18.     private LocationManager locationManager;
  19.     private String provider;
  20.     MapView mapView;
  21.     BaiduMap baiduMap;
  22.     boolean ifFrist = true;
  23.     @Override
  24.     protected void onCreate(Bundle savedInstanceState) {
  25.         super.onCreate(savedInstanceState);
  26.         SDKInitializer.initialize(getApplicationContext());
  27.         setContentView(R.layout.activity_main);
  28.         mapView = (MapView) findViewById(R.id.map_view);
  29.         // 获取baiduMap对象
  30.         baiduMap = mapView.getMap();
  31.         // 设置可改变地图位置
  32.         baiduMap.setMyLocationEnabled(true);
  33.         locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  34.         List<String> list = locationManager.getProviders(true);
  35.         if (list.contains(LocationManager.GPS_PROVIDER)) {
  36.             provider = LocationManager.GPS_PROVIDER;
  37.         } else if (list.contains(LocationManager.NETWORK_PROVIDER)) {
  38.             provider = LocationManager.NETWORK_PROVIDER;
  39.         } else {
  40.             Toast.makeText(this, "当前不能提供位置信息", Toast.LENGTH_LONG).show();
  41.             return;
  42.         }
  43.         Location location = locationManager.getLastKnownLocation(provider);
  44.         if (location != null) {
  45.             navigateTo(location);
  46.         }
  47.         locationManager.requestLocationUpdates(provider, 5000, 1,
  48.                 locationListener);
  49.     }
  50.     private void navigateTo(Location location) {
  51.         // 按照经纬度确定地图位置
  52.         if (ifFrist) {
  53.             LatLng ll = new LatLng(location.getLatitude(),
  54.                     location.getLongitude());
  55.             MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
  56.             // 移动到某经纬度
  57.             baiduMap.animateMapStatus(update);
  58.             update = MapStatusUpdateFactory.zoomBy(5f);
  59.             // 放大
  60.             baiduMap.animateMapStatus(update);
  61.             ifFrist = false;
  62.         }
  63.         // 显示个人位置图标
  64.         MyLocationData.Builder builder = new MyLocationData.Builder();
  65.         builder.latitude(location.getLatitude());
  66.         builder.longitude(location.getLongitude());
  67.         MyLocationData data = builder.build();
  68.         baiduMap.setMyLocationData(data);
  69.     }
  70.     LocationListener locationListener = new LocationListener() {
  71.         @Override
  72.         public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
  73.             // TODO Auto-generated method stub
  74.         }
  75.         @Override
  76.         public void onProviderEnabled(String arg0) {
  77.             // TODO Auto-generated method stub
  78.         }
  79.         @Override
  80.         public void onProviderDisabled(String arg0) {
  81.             // TODO Auto-generated method stub
  82.         }
  83.         @Override
  84.         public void onLocationChanged(Location arg0) {
  85.             // TODO Auto-generated method stub
  86.             // 位置改变则重新定位并显示地图
  87.             navigateTo(arg0);
  88.         }
  89.     };
  90.     @Override
  91.     protected void onDestroy() {
  92.         // 释放资源
  93.         super.onDestroy();
  94.         if (locationManager != null) {
  95.             locationManager.removeUpdates(locationListener);
  96.         }
  97.         mapView.onDestroy();
  98.         baiduMap.setMyLocationEnabled(false);
  99.     }
  100. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精华推荐
  • 一个人开始废掉的3种迹象

    一个人开始废掉的3种迹象

  • 从零到60秒的惬意冰镇啤酒

    从零到60秒的惬意冰镇啤酒

  • 马云、马化腾、王石都弃之不用的人,有一个共同点

    马云、马化腾、王石都弃之不用的人,有一个

  • 哥特式高迪凳子

    哥特式高迪凳子

  • 千亿小米,雷军逆袭

    千亿小米,雷军逆袭

  • 她一战赚了几十亿,她说:世界上最好的生意有三种

    她一战赚了几十亿,她说:世界上最好的生意有

  • 雷军:合伙人比制度更重要!

    雷军:合伙人比制度更重要!

  • 一个美美的令人喜欢的自行车铃

    一个美美的令人喜欢的自行车铃

QQ客服热线
QQ:1090281100 周一至周日:09:00 - 21:00
WeChat:dianlingkeji
Email:kaixin1069@vip.qq.com

优定义logo

勿要吝啬你无形资产,请为创新续源,知识、点子、灵感、经验、需求等均是创新源泉,你不经意的一句话将是另一个人的灵感。明天的明天,还有明天,我们应该把握今天,每一个今天,都有一个新的事物在出现,今天的漠视明天的落后,不浪费每一个学习的时刻,学习助力非凡。

技术支持 Discuz! X3.4 - 3.5 beta © 2001-2018 Comsenz Inc.

小黑屋|手机版|优定义 ( 粤ICP备16085288号-2 )|申请友链|网站地图

粤公网安备 44011102001144 号 GMT+8, 2018-10-17 11:59 , Processed in 0.093688 second(s), 26 queries .

快速回复 返回顶部 返回列表