2013-07-31 2 views
1

Я создал приложение для Android, чтобы нарисовать свободные фигуры по карте google v2. Идея приложения заключается в том, что я объединяю два приложения, один - рисовать свободные фигуры, а другой - обычное приложение google map v2.Нарисуйте google map v2 android

Это link мой последний вопрос об этом приложении и содержит код

приложение хорошо работает со мной, но теперь у меня есть новая проблема. Моя проблема заключается в том, что, когда я рисую линию на определенном месте на карте и конвертирую элемент управления в карту и перетаскивая ее, я обнаружил, что линия держится на своем месте в представлении, и карта перемещается по линии, и это приводит к тому, что линия быть в другом месте, а не в том месте, которое я хочу.

Есть ли способ сделать линию устойчивой в том месте, в котором я нарисован, и когда я перетаскиваю карту, линия перетаскивается с ее местоположением?

Надеюсь, что кто-то получил мое значение.

+0

Я нашел решение [здесь] [1] это с помощью полилинии в маркерной сопротивления случае [1]: http://stackoverflow.com/questions/18297392/draw-polygon-using- onmarkerdrag-google-map-v2 – Eman87

ответ

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); 
} 

Затем повторите прослушивание на вашей картевилле.

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

Смежные вопросы