W mojej aplikacji Narysuj farbę w wolnej ręce w widoku mapy, ale wyszukiwanie wielu informacji w końcu otrzymałem z prostokąta w kształcie narysuj na widok mapy, ale chcę zamiast prostokąta narysować wolną rękę, jak zygzak, jak zmienić kod Każda pomoc proszę ..Android, jak narysować farbę w wolnej ręce w MapView za pomocą nakładki?
MapOverlay.java
public class MapOverlay extends Overlay {
private float x1,y1,x2,y2;
private GeoPoint p1=null,p2=null;
private MapExampleActivity mv = null;
private Paint paint = new Paint();
private Path path = new Path();
private boolean isUp = false;
//constructor receiving the initial point
public MapOverlay(MapExampleActivity mapV,float x,float y){
paint.setStrokeWidth(2.0f);
x1 = x;
y1 = y;
mv = mapV;
p1 = mapV.getMapView().getProjection().fromPixels((int)x1,(int)y1);
}
//override draw method to add our custom drawings
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
if(p1 != null && p2 != null){
//get the 2 geopoints defining the area and transform them to pixels
//this way if we move or zoom the map rectangle will follow accordingly
Point screenPts1 = new Point();
mapView.getProjection().toPixels(p1, screenPts1);
Point screenPts2 = new Point();
mapView.getProjection().toPixels(p2, screenPts2);
//draw inner rectangle
paint.setColor(Color.BLUE);
// paint.setStyle(Style.FILL);
canvas.drawPath(path, paint);
canvas.drawRect(screenPts1.x, screenPts1.y, screenPts2.x, screenPts2.y, paint);
//draw outline rectangle
// paint.setColor(Color.YELLOW);
paint.setStyle(Style.STROKE);
// canvas.drawRect(screenPts1.x, screenPts1.y, screenPts2.x, screenPts2.y, paint);
canvas.drawPath(path, paint);
}
return true;
}
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView) {
if(mv.isEditMode() && !isUp){
if(e.getAction() == MotionEvent.ACTION_DOWN){
x1 = y1 = 0;
x1 = e.getX();
y1 = e.getY();
p1 = mapView.getProjection().fromPixels((int)x1,(int)y1);
}
//here we constantly change geopoint p2 as we move out finger
if(e.getAction() == MotionEvent.ACTION_MOVE){
x2 = e.getX();
y2 = e.getY();
p2 = mapView.getProjection().fromPixels((int)x2,(int)y2);
}
//---when user lifts his finger---
if (e.getAction() == MotionEvent.ACTION_UP) {
isUp = true;
}
return true;
}
return false;
}
}
użyciu tego i stanie wyciągnąć jak tego prostokąta kształtach i sporządzić ponownie kliknąć przycisk przełączania (można wyciągnąć kilka razy)
Chcę rysować linie zamiast prostokąta, jak na poniższym obrazku (rysuj wiele razy).
wreszcie znalazłem ten link ten link zapewnić kształt prostokąta wyciągnąć http://n3vrax.wordpress.com/2011/08/13/drawing-overlays-on-android-map-view/
wystarczy zmienić prostokąt uwolnić narysować jakiś pomysł, proszę ....
używamy przycisku narysowania dla rysownika na mapie obok, gdy przycisk losowania połączenia wyświetli widok mapy za pomocą farby ... wtedy będziemy powiększać i przesuwać ... ale od tego, gdy przycisk losowania połączenia po raz drugi również narysujemy obraz .. –
@Luic Draw za drugim razem rysowanie farby nie jest pokazane i kiedy klikam przycisk nie mogę powiększyć widoku mapy ..... Po prostu spójrz na przykładowy link, mamy jasny pomysł ... – NagarjunaReddy
Nie mogę zrozumieć twojego komentarza, potrzebujesz w celu przeformułowania go. Zapewniam, że powyższy kod działa idealnie, ponieważ przetestowałem go przed pocztą. Jeśli chodzi o zoom, to nie możesz powiększyć, gdy rysujesz alover na mapie. Jeśli chcesz, aby zoom działał, musisz ustawić 'editMode()' na false lub musisz wykluczyć obszar przycisków powiększania z obszaru rysowania. – Luis