2013-07-31 126 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