2011-04-07 6 views
1

Je veux dessiner un polygone sur la carte. C'est comme, j'ai un nombre n de GeoPoints et ensuite en utilisant ces géopoints, je veux dessiner un polygone avec n sommets.Dessine un polygone sur mapview + android

merci !!

Mise à jour:

grâce à freza, maintenant je sais comment dessiner une superposition. Il existe une autre fonction sous la classe de recouvrement: public boolean onTap(GeoPoint p, MapView mapView). Maintenant ce que je veux, c'est quand l'utilisateur tape sur n'importe quelle superposition, je veux changer l'image de la superposition. Par exemple, j'ai d'abord dessiné un simple cercle vert pour afficher la superposition. Alors maintenant, lorsque l'utilisateur tape sur cette superposition verte: je veux changer la couleur en rouge ou dessiner un nouveau bitmap en place si le cercle vert. Comment puis-je faire ceci?

+1

voir ce [lien] (http://stackoverflow.com/questions/2176397/drawing-a-line-path-on-google-maps) – pankajagarwal

Répondre

0

Cela peut vous aider. Code suit:

  private void changeMarkers(int noteIndex) { 
    for (int i = 0; i < noteOverlays.size(); i++) { 
     if (i == noteIndex || noteIndex == -1) { 
      Drawable selectedMarker = getResources().getDrawable(
        R.drawable.note_in_map); 
      int selectedMarkerWidth = selectedMarker.getIntrinsicWidth(); 
      int selectedMarkerHeight = selectedMarker.getIntrinsicHeight(); 
      selectedMarker.setBounds(-selectedMarkerWidth/2, 
        -selectedMarkerHeight, selectedMarkerWidth/2, 0);   noteOverlays.getItem(i).setMarker(selectedMarker); 
     } else { 
      Drawable unselectedMarker = getResources().getDrawable(
        R.drawable.note_in_map_notselected); 
      int nonSelectedMarkerWidth = unselectedMarker 
        .getIntrinsicWidth(); 
      int nonSelectedMarkerHeight = unselectedMarker 
        .getIntrinsicHeight(); 
      unselectedMarker 
        .setBounds(-nonSelectedMarkerWidth/2, 
          -nonSelectedMarkerHeight, 
          nonSelectedMarkerWidth/2, 0); 
      noteOverlays.getItem(i).setMarker(unselectedMarker); 
     } 
    } 
    mapView.invalidate(); 
}