百度地图BaiduMap--学习(二)------定位到自己的位置之没反应

来源:互联网 发布:python gui自动化 编辑:程序博客网 时间:2024/04/30 04:36

过了开始的那一关,总以为就好一点,可惜人在江湖飘啊,怎能不挨刀,动不动就上刀山下油锅。。。。

今天的是定位到自己的位置,本来我以为,这块对着代码敲敲代码就能轻松搞定,结果还是掉水沟里了。。

贴代码吧直接:

其余的都不变

MainActivity.java

package com.example.baidumaptest;import java.util.List;import android.app.Activity;import android.content.Context;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.widget.Toast;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity {private MapView mapView;private BaiduMap baiduMap;private LocationManager locationManager;private String provider;private boolean isFirstLocate = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mapView = (MapView) findViewById(R.id.map_view);baiduMap = mapView.getMap();locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);List<String> providerList = locationManager.getProviders(true);if (providerList.contains(LocationManager.GPS_PROVIDER)) {provider = LocationManager.GPS_PROVIDER;} else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {provider = LocationManager.NETWORK_PROVIDER;} else {Toast.makeText(this, "No location provider to use",Toast.LENGTH_SHORT).show();return;}Location location = locationManager.getLastKnownLocation(provider);if (location != null) {navigateTo(location);}locationManager.requestLocationUpdates(provider, 1000, 1,locationListener);}private void navigateTo(Location location) {if (isFirstLocate) {LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(update);update = MapStatusUpdateFactory.zoomTo(16f);baiduMap.animateMapStatus(update);isFirstLocate = false;}}LocationListener locationListener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}@Overridepublic void onLocationChanged(Location location) {if (location != null) {navigateTo(location);}}};@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();if (locationManager != null) {locationManager.removeUpdates(locationListener);}}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}}
代码我就不解释了,解释的网上一大堆,我就说说运行出来没反应的原因之一(毕竟出错容易开叉,我只是其中的岔路之一)

其余的不变,这时候某些同学是运行出来了,某些同学则是一脸懵逼(me,too),出现的还是伟大领袖毛主席宣布我们站起来的地方,我是上网各种找啊,都快哭了,就是找不到原因,别人也是这么干的,为什么就偏偏溅我一脸血

后来找到最最开始入门的一个项目(就是获取经纬度显示在textview上那个,我一直没成功),这两个一个德行,都是找不到位置提供器,我就奇了怪了,长得帅还有错,这么惩罚我,各种翻身,最后把别人的一个找经纬度的demo运行一下,位置提供器倒是有了,但是还是不行,不出经纬度还是各种试,发现某个人说得好啊,出门试试,你们家又没有露天泳池,就跑到户外,来回晃悠几下,出来了。。。

赶紧回来试试地图定位,出来晃悠几圈还是我敬爱的那个地方,喝了点水,看了会电子书,算是崩溃了,差不多半个小时,突然想到,里里外外我都检查了一遍,差了什么呢,权限,对,就是权限狗,最开始我也是一大堆权限都写进去了,后来y因为key的原因,我用了别人的权限,倒是这边的地图定位还是那几个权限,对比了一下,就是这个权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
运行一下,终于出现了我们家门口的杀猪场。。。



我也是个有故事的人。。。



0 0