百度地圖BaiduMap--學習(二)------定位到自己的位置之沒反應
阿新 • • 發佈:2019-01-25
過了開始的那一關,總以為就好一點,可惜人在江湖飄啊,怎能不挨刀,動不動就上刀山下油鍋。。。。
今天的是定位到自己的位置,本來我以為,這塊對著程式碼敲敲程式碼就能輕鬆搞定,結果還是掉水溝裡了。。
貼程式碼吧直接:
其餘的都不變
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; @Override protected 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() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { if (location != null) { navigateTo(location); } } }; @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); if (locationManager != null) { locationManager.removeUpdates(locationListener); } } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onResume() { super.onResume(); mapView.onResume(); } }
程式碼我就不解釋了,解釋的網上一大堆,我就說說執行出來沒反應的原因之一(畢竟出錯容易開叉,我只是其中的岔路之一)
其餘的不變,這時候某些同學是執行出來了,某些同學則是一臉懵逼(me,too),出現的還是偉大領袖毛主席宣佈我們站起來的地方,我是上網各種找啊,都快哭了,就是找不到原因,別人也是這麼幹的,為什麼就偏偏濺我一臉血
後來找到最最開始入門的一個專案(就是獲取經緯度顯示在textview上那個,我一直沒成功),這兩個一個德行,都是找不到位置提供器,我就奇了怪了,長得帥還有錯,這麼懲罰我,各種翻身,最後把別人的一個找經緯度的demo執行一下,位置提供器倒是有了,但是還是不行,不出經緯度還是各種試,發現某個人說得好啊,出門試試,你們家又沒有露天泳池,就跑到戶外,來回晃悠幾下,出來了。。。
趕緊回來試試地圖定位,出來晃悠幾圈還是我敬愛的那個地方,喝了點水,看了會電子書,算是崩潰了,差不多半個小時,突然想到,裡裡外外我都檢查了一遍,差了什麼呢,許可權,對,就是許可權狗,最開始我也是一大堆許可權都寫進去了,後來y因為key的原因,我用了別人的許可權,倒是這邊的地圖定位還是那幾個許可權,對比了一下,就是這個許可權
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
執行一下,終於出現了我們家門口的殺豬場。。。
我也是個有故事的人。。。