2013-09-25 3 views
1

Je veux dessiner un polygone sur google maps qui peut être redimensionné. Tout marqueur supprimé avec succès par onMarkerClick mais je ne peux pas changer la position du marqueur en le faisant glisser à un autre endroit. Voici mon code:android google maps v2: redimensionner le polygone

 PolygonOptions polygon = new PolygonOptions(); 
     Polygon my_polygon ; 
     polygon.fillColor(Color.RED); 
.... 
@Override 
public boolean onMarkerClick(Marker arg0) { 
    my_polygon.remove(); 
    arg0.remove(); 
    polygon.getPoints().remove(arg0.getPosition()); //it's ok, marker deleted 

    return true; 
} 

@Override 
    public void onMarkerDrag(Marker marker) 
    { 
     polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 

    } 
    @Override 
    public void onMarkerDragStart(Marker marker) 
    { 

    polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 


    } 
    @Override 
    public void onMarkerDragEnd(Marker marker) 
    { 
     my_polygon.remove(); 
     polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 
    polygon.add(marker.getPosition()); 
    my_polygon=map.addPolygon(polygon); //created new polygon which contains previous marker position 
    } 

Alors, comment puis-je supprimer correctement les points de repère PREVIUS?

+0

au début, vous dites que vous supprimez les marqueurs correctement. A la fin, vous demandez comment enlever le marqueur correctement. Qu'est-ce que j'oublie ici?! – bofredo

Répondre

0

Conservez d'abord tous les points de LatLng dans une liste de LatLng. Ne pas supprimer le marqueur dans onMarkerDragStart (marqueur) même enregistrer dans une nouvelle variable LatLng. Maintenant, à onMarkerDragEnd (Marker marker), d'abord obtenir le nouveau point, puis retirez l'ancien que vous étiez enregistrer dans la nouvelle variable LatLng. En même temps, vous devez supprimer le même marqueur de l'arrayliste que vous avez enregistré et ajouter cette nouvelle valeur, puis dessiner un polygone à nouveau. Par exemple, si vous avez déclaré un arraylist de latlng comme ceci ArrayList points = new ArrayList();

puis dessinez un ploygon dans onMarkerDragEnd (marqueur marqueur) comme suit

Polygon polygon = map.addPolygon(new PolygonOptions() 
     .addAll(points) 
     .strokeColor(Color.BLACK) 
     .strokeWidth(5) 
     .fillColor(0x884d4d4d)); 

essayer. J'espère que cela aidera. :)

+0

Cela n'a pas aidé. On dirait que chez OnMarkerDragStart j'ai déjà changé les coordonnées. – user1910866