gwt删除标记

时间:2011-01-17 16:38:27

标签: gwt google-maps-markers

我有问题。这是我的代码:

 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(无论我点击哪个Marker)。是否有可能获得正确的价值观?

1 个答案:

答案 0 :(得分: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;
    }
});