0

我试图在地图上绘制折线以跟踪我的位置。出于某种原因,我不知道为什么我的方法onMyLocationChanged(位置)没有被调用,并没有在地图上绘制折线。这是与lcoationToLatLng(loc)方法一起使用的方法,它假定帮助在地图上绘制跟踪我去哪里的折线。为什么不画这条折线?这里是我的代码:折线未绘制在地图上

public class RouteTracking extends FragmentActivity implements View.OnClickListener, OnMyLocationChangeListener{ 
    private GoogleMap mMap = null; 
    private Context context = this; 
    private Location lastLocationloc = null; 

    @Override 
protected void onCreate(Bundle load) { 
    super.onCreate(load); 

    setContentView(R.layout.fragment_ride_tracking); 

    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.myMapView)).getMap(); 
    int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context); 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    //Get the current location 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String provider = locationManager.getBestProvider(criteria, true); 
    Location location = locationManager.getLastKnownLocation(provider); 

    //Zooms into the current location when the activity is started 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 
    float zoom = (float) 10.0; 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), zoom));  


    if (mMap != null) { 
     mMap.setMyLocationEnabled(true); 
    } 
    } 

    @Override 
    public void onMyLocationChange(Location location) { 
     if (lastLocationloc == null) { 
      lastLocationloc = location; 
     } 
     LatLng lastLatLng = locationToLatLng(lastLocationloc); 
     LatLng thisLatLng = locationToLatLng(location); 
     mMap.addPolyline(new PolylineOptions().add(lastLatLng).add(thisLatLng).width(3).color(Color.RED)); 
     lastLocationloc = location; 
    } 

    public static LatLng locationToLatLng(Location loc) { 
     if (loc != null) 
      return new LatLng(loc.getLatitude(), loc.getLongitude()); 
     return null; 
    } 
} 

回答

0

我想你应该实现LocationListenerimplements LocationListener),然后修改代码为:

@Override 
    public void onLocationChanged(Location location) { 
     if (lastLocationloc == null) { 
      lastLocationloc = location; 
     } 
     LatLng lastLatLng = locationToLatLng(lastLocationloc); 
     LatLng thisLatLng = locationToLatLng(location); 
     mMap.addPolyline(new PolylineOptions().add(lastLatLng).add(thisLatLng).width(3).color(Color.RED)); 
     lastLocationloc = location; 
    } 

试试看,我希望这能解决您的问题,祝你好运^^

0

您需要申请(登记)从位置管理器更新(或至少我没有看到,你已经这样做了)。

public void init(Context context) 
    { 
     this.context = context; 

     locationManager = (LocationManager) this.context 
      .getSystemService(Context.LOCATION_SERVICE); 

     // exceptions will be thrown if gps provider is not permitted. 
     try 
     { 
      gpsEnabled = locationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 

     } catch (Exception e) 
     { 
      Log.d("Fail", e.getMessage()); 
     } 

       // ask for gps updates from the device if gps is enabled 
     if (gpsEnabled) 
     { 
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,this); 
     } 
    }