2011-01-17 2 views
0

J'ai un problème. voici mon code:gwt enlever un marqueur

map.addMapClickHandler(new MapClickHandler() 
    { 
     public void onClick(MapClickEvent e) 
     { 
     MapWidget sender = e.getSender(); 
      Overlay overlay = e.getOverlay(); 
      LatLng pkt = e.getLatLng(); 
     if (overlay != null && overlay instanceof Marker) 
     { 
     // double a = pkt.getLatitude(); 
     //double b = pkt.getLongitude(); 
     // String trr = a+";"+b; 
     sender.removeOverlay(overlay); 
     } 

     else 
     { 
     sender.addOverlay(new Marker(pkt)); 
     double a = pkt.getLatitude(); 
     double b = pkt.getLongitude(); 
     point[akt]=a+";"+b; 
      } 
     }); 

et la question est pourquoi je ne peux pas obtenir Latitude et Longitude quand overlay est pas nul? (la zone comented) tout le temps là est alerte que "exception non interceptée s'est échappée". comment le faire correctement?


pas, après plus de tests, il ne fonctionne pas:/

parce que dans

if (overlay != null && overlay instanceof Marker) { 
    LatLng pkt = e.getOverlayLatLng(); 
    double a = pkt.getLatitude(); 
    double b = pkt.getLongitude(); 
    String trr = a + ";" + b; 
    sender.removeOverlay(overlay); 
} 

et Latitude Longitude je reçois est celui du dernier marqueur j'ai ajouté (peu importe quel marqueur je clique sur). est-il possible d'obtenir les bonnes valeurs?

Répondre

0

Le JavaDocs for MapClickEvent indiquent que MapClickEvent # getOverlayLatLng() doit être utilisé lorsque l'utilisateur a cliqué sur une superposition (notez que je ne l'ai pas testé ce code):

map.addMapClickHandler(new MapClickHandler(){ 
    public void onClick(MapClickEvent e) { 
    MapWidget sender = e.getSender(); 
    Overlay overlay = e.getOverlay(); 

    if (overlay != null && overlay instanceof Marker) { 
     LatLng pkt = e.getOverlayLatLng(); 
     double a = pkt.getLatitude(); 
     double b = pkt.getLongitude(); 
     String trr = a + ";" + b; 
     sender.removeOverlay(overlay); 
    } else if (overlay == null) { 
     LatLng pkt = e.getLatLng(); 
     sender.addOverlay(new Marker(pkt)); 
     double a = pkt.getLatitude(); 
     double b = pkt.getLongitude(); 
     point[akt] = a + ";" + b; 
    } 
}); 
+0

merci, il travaille :) – john