我有一個具有觸摸事件的MapActivity。MapActivity強制關閉,觸摸事件無情地觸發
在觸摸事件:
我得到當前地址解析
將覆蓋圖像上的位置。
並將其設置爲mapview的中心。
這似乎工作正常,如預期的一段時間。但是,然後申請部隊關閉。我認爲即使沒有任何東西被觸摸,觸摸事件也會像瘋了一樣被解僱。我知道,因爲我已經舉行了一次敬酒,表明了被觸摸的位置的經度和姿態。即使沒有任何東西被觸動,它也會一直顯示出來。
我似乎無法準確定位問題,更不用說修復它了。這裏的觸摸事件對我mapActivity
private void LocationStuffs(double latitude, double longitude){
itemizedOverlay.clear();
itemizedOverlay.addOverlayItem((int)latitude, (int)longitude, "place");
mapView.invalidate();
mapView.getOverlays().add(itemizedOverlay);
MapController mc = mapView.getController();
mc.setCenter(new GeoPoint((int)latitude, (int)longitude));
mc.setZoom(20);
}
public boolean onTouchEvent(MotionEvent event, MapView mapView){
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6()/1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
latitude = p.getLatitudeE6()/1E6;
longitude = p.getLongitudeE6()/1E6;
LocationStuffs(latitude*1E6, longitude*1E6);
}
return false;
}
如果你的應用程序崩潰,你應該總是發表您的logcat的錯誤。 – Sam
是的,它會被調用很多次。爲了解決這個問題,當'if(event.getAction()== 1)'時,在隨後的調用中保存事件的位置,檢查新位置是否在保存位置附近;如果是這種情況,請勿再次輸入if塊。正如@Sam所說,發佈你的logcat。 –
謝謝。這可能會解決問題。但我不明白爲什麼這次觸發事件經常被解僱?它是否應該只在地圖被觸摸時纔會觸發?或者它以不同的方式工作? –