2017-01-23 72 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)“ –