我有问题。这是我的代码:
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)。是否有可能获得正确的价值观?
答案 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;
}
});