2011-01-17 6 views
0

У меня проблема. вот мой код:gwt удалить маркер

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

и вопрос, почему я не могу получить широту и долготу, когда наложение не равно нулю? (площадь, отмеченная знаком) все время появляется предупреждение о том, что «исключенное исключение исключено». как это сделать правильно?


нет, после нескольких тестов, он не работает:/

, потому что в

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

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

ответ

0

JavaDocs for MapClickEvent показывают, что MapClickEvent # getOverlayLatLng() следует использовать, когда пользователь нажимает на оверлей (обратите внимание, что я не проверял этот код):

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

спасибо, это работает :) – john

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