2013-01-04 113 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

相關問題