2013-07-31 166 views
1

我創建了一個android應用程序來繪製谷歌地圖v2上的自由形狀。該應用程序的想法是,我結合了兩個應用程序,一個是繪製自由形狀,另一個是正常的谷歌地圖V2應用程序。通過谷歌地圖v2繪製android

link是我關於這個程序的最後一個問題,它包含的代碼

的應用效果很好我,但現在我有一個新的問題。我的問題是,當我在地圖上的特定位置繪製一條線並將控制轉換爲地圖並將其拖動時,我發現該線保留在視圖中的位置,並且地圖在該線的下方移動,這導致線條在另一個位置,而不是我想要的位置。

是否有任何方法可以使線條在我繪製的位置處保持穩定,並且在拖動地圖時將線條拖動到其位置?

希望任何人都明白我的意思。

+0

我發現溶液[這裏] [1]這是通過在標記拖動事件 [1]使用折線:http://stackoverflow.com/questions/18297392/draw-polygon-using- onmarkerdrag-google-map-v2 – Eman87

回答

1

例如,如果您使用畫布在您的mapview上繪製線條,那麼您需要獲取x,y點的起點和終點。

然後通過以下代碼,您可以將x,y點更改爲經度和緯度。

public boolean onTouchEvent(MotionEvent event) 
{ 
    int X = (int)event.getX();   
    int Y = (int)event.getY(); 

    GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y); 
} 

然後在你的mapvierw像這樣重新監聽listener。

map.setOnCameraChangeListener(new OnCameraChangeListener() { 

    @Override 
    public void onCameraChange(CameraPosition arg0) { 
     // Move camera. 
    Here remove your view from screen and then get lat long of visible region by  passing x,y points of 4 regions in `mapView.getProjection().fromPixels(x,y)` and then check if latitude and longitude of your line within range if yes then drawline by following code. 

    float pisteX; 
    float pisteY; 
    Projection projection = this.mapView.getProjection(); 
    Point pt = new Point(); 
    GeoPoint gie = new GeoPoint(latitude,longitude); 
    Rect rec = mapView.getScreenRect(new Rect()); 
    projection.toPixels(gie, pt); 
    pisteX = pt.x-rec.left; // car X screen coord 
    pisteY = pt.y-rec.top; // car Y screen coord 

    Now draw line between this two (x,y) points. 
    } 


}); 

希望我可以讓你清楚,你可以理解我想說什麼。

+0

對我來說不完全清楚。請檢查我的代碼http://stackoverflow.com/questions/17687220/disable-and-enable-view-android,並幫助我梳理你的答案在我的代碼。 – Eman87

+0

我不是在使用畫布的mapView中繪製線條,而是在地圖上繪製自定義視圖,因爲我正在使用帶有片段的地圖v2。 – Eman87