绘制谷歌地图v2 android

时间:2013-07-31 10:53:13

标签: android google-maps-api-2 android-custom-view

我创建了一个Android应用程序,在谷歌地图v2上绘制自由形状。该应用程序的想法是我结合了两个应用程序,一个是绘制自由形状,另一个是普通的谷歌地图v2应用程序。

link是关于此应用的最后一个问题,它包含代码

该应用程序适用于我,但现在我有一个新问题。我的问题是,当我在地图上的特定位置绘制一条线并将控制转换为地图并拖动它时,我发现该线保持在视图中的位置,并且地图在线下移动,这导致线到在另一个位置而不是我想要的位置。

是否有任何方法可以使线条在我绘制的位置保持稳定,当我拖动地图时,拖动线条的位置?

希望有人得到我的意思。

1 个答案:

答案 0 :(得分:1)

例如,如果您使用画布在地图视图上绘制线条,则需要获得起点和终点的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上重新注册侦听器。

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.
    }


});

希望我能让你清楚,你可以理解我想说的话。