java - MapActivity 强制关闭,触摸事件鲁莽地触发

标签 java android google-maps android-mapview touch-event

我有一个具有触摸事件的 MapActivity。

在触摸事件中:

  • 我获取当前的地理编码

  • 在该位置放置覆盖图像。

  • 并将其设置为 map View 的中心。

这似乎工作正常并且在一段时间内符合预期。但随后应用力就结束了。我认为即使没有任何东西被触摸,触摸事件也会被疯狂地触发。我知道这一点是因为我设置了一个 toast,显示触摸位置的经度和纬度。即使没有触及任何东西,它也会不断出现。

我似乎无法准确定位问题,更不用说解决它了。这是我的 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;
    }

最佳答案

更改返回语句以返回 true:

return true;

基本上,它的作用是告诉系统您已经处理了触摸事件。让我知道是否可以解决问题。

关于java - MapActivity 强制关闭,触摸事件鲁莽地触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627946/

相关文章:

java - 用于按钮文本的 Selenium css 选择器

java - 如何使用二进制形式的 Retrofit 上传图像?

google-maps - 带有 KML 的 Google map 不会服从缩放设置;而是缩小以适合所有标记

google-maps - 在网站中嵌入谷歌地图时的语言参数

google-maps - 将 d3 路径叠加到 Google map 上?

java - 如何压缩 float 据?

java - 为什么 FileChannel.tryLock 不阻止跨多个进程的访问?

android - 如何处理互联网连接中断?

android - 将数据从服务发送到 Activity Android

java - 计时器导致 ViewRootImpl$CalledFromWrongThreadException?