2017-01-23 53 views
-3

三個月前我的代碼工作正常,但現在它沒有工作。確切onLocationChanged沒有被調用,我不知道爲什麼。我3個月沒有改變任何東西。另外,當我想在地圖上顯示標記時,它不存在。我有我需要的所有許可。下面有在Java中(安卓)代碼:代碼onLocationChanged沒有在Android中調用Java

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_demo_activity); 

     new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US)); 

     OnClickListener(); 

     mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
     if (mapFragment != null) { 
      mapFragment.getMapAsync(new OnMapReadyCallback() { 
       @Override 
       public void onMapReady(GoogleMap map) { 
        loadMap(map); 
       } 
      }); 
     } else { 
      Toast.makeText(this, "Error - Map Fragment was null!!", Toast.LENGTH_SHORT).show(); 
     } 

     Marker("50.06465", "19.94498", "Example"); 

    } 


    public void onLocationChanged(Location location) { 

    mLAT = Double.toString(location.getLatitude()); 
    mLON = Double.toString(location.getLongitude()); 

    new DoIt().execute(); 

} 

    public void Marker(String LAT, String LON, String tit) { 

    double dLAT = Double.parseDouble(LAT); 
    double dLON = Double.parseDouble(LON); 

    LatLng pos = new LatLng(dLAT, dLON); 

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     return; 
    } 

    map.setMyLocationEnabled(true); 

    singleMarker = map.addMarker(new MarkerOptions() 
      .title(tit) 
      .position(pos) 
      .icon(BitmapDescriptorFactory.fromResource(R.mipmap.icon)); 

} 
+0

也許您的手機禁用了良好的位置 –

+0

什麼類包含此代碼?請編輯您的問題以顯示此內容。 –

回答

0

你缺少幾個關鍵線路:

  1. 您的活動必須實現LocationListener

    class MyActivity implements LocationListener 
    
  2. 您應該使用上onLocationChanged()@Override註釋:

    @Override 
    public void onLocationChanged(Location location) { 
    
  3. 您需要通過調用requestLocationUpdates()註冊您的聽衆:

    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    

    這一步是爲了告訴至關重要Android系統調用您的onLocationChanged()方法。

請參閱Android Developer指南中的Location Strategies瞭解更多詳情。

+0

當我實現第三點時,我得到這樣的錯誤「無法解決方法requestlocationupdates」和應用程序崩潰。 – Zyngi

+0

@Zyngi請發表您的問題。一定要包含所有相關的代碼和錯誤消息。 –

+0

@ Code-Apprentice如何在片段中實現這一點?我問這是因爲requestLocationUpdates()顯示錯誤爲「無法解析方法」requestLocationUpdates(java.lang.String,int,int,driver.arcreloaded.cogzidel.com.arcnereloaded_driver.Map_Fragment)「 –

相關問題