2013-01-04 91 views
2

我需要在地图上绘制路径。为此,我考虑了使用Polyline自新的谷歌地图。我的问题是,我的应用程序工作,但它没有绘制在地图上的东西。我希望每次我改变位置时都会画画,基本上是为了画出我的路径。无法根据当前位置在Google地图v2上绘图

public class MapActivity extends FragmentActivity implements LocationListener { 
    GoogleMap    myMap; 
    Location    lastLocation; 
    private LocationManager locManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_layout); 
     myMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
     myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 


     locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     boolean networkEnabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     if (!networkEnabled) { 
      Toast.makeText(this, "network not enabled", 0); 
     } 

    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

    } 


    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
      lastLocation=locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
      Polyline line=myMap.addPolyline(new PolylineOptions().add(new LatLng(location.getLatitude(),location.getLongitude())).color(Color.RED)); 

     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
+0

我也面临同样的问题,如果你解决了这个问题,请给我一些建议。谢谢。 –

回答

0

线条需要至少两个点。您正在尝试仅使用单个点绘制一条线。这将画出一条无限小的线条,因为它无限小,所以您将难以看清。

如果要绘制直线,请使用两个或更多点。如果你想在一个点上绘制某个东西,可以使用标记,而不是折线。

+0

我想根据我的最后一个位置和我的新位置绘制一条线。如果我的位置已更改,getlastKnownLocation和当前位置是否相同? – diazazar

+0

@ user1949486:“我想要根据我的最后一个位置和我的新建立的线绘制线条” - 这很好,但是您会发现在定义“PolylineOptions”时,您的add()调用具有一个“LatLng”参数。它需要两个或更多'LatLng'参数才能成为一条线。 – CommonsWare

+0

谢谢,我的问题是我自己的疏忽!增加另一点解决了这个问题。而且,让我的位置很容易。 – diazazar

相关问题