2017-01-23 9 views
-3

3ヶ月前に私のコードは正常に動作しましたが、今は動作しませんでした。正確にはonLocationChangedが呼び出されていないため、なぜわからないのですか。私は3ヶ月間何も変えていない。また、地図上にマーカーを表示したい場合は存在しません。私には必要なすべての許可があります。以下は、Javaの(アンドロイド)内のコードがあります:あなたは、コードのいくつかの重要なライン欠けているAndroidで呼び出されていないonLocationChanged 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); 
    

    このステップでは、伝えるために重要ですあなたのonLocationChanged()メソッドを呼び出すAndroidシステム。

は、より多くの詳細については、AndroidデベロッパーガイドでLocation Strategiesを参照してください。

+0

私が3番目のポイントを実装したとき、私はこのようなエラーが発生しました。 "メソッドの要求場所の更新を解決できません"とアプリがクラッシュしました。 – Zyngi

+0

@Zyngi新しい質問を投稿してください。すべての関連するコードとエラーメッセージを必ず含めてください。 –

+0

@ Code-Apprenticeこれをフラグメントに実装する方法は? "requestLocationUpdates(java.lang.String、int、int、driver.arcreloaded.cogzidel.com.arcnereloaded_driver.Map_Fragment)メソッドを解決できません"というエラーを表示しているrequestLocationUpdates()が返されるため、私はこれを求めています。 –

関連する問題