当前位置: 首页 > 知识库问答 >
问题:

osmdroid-longpreshelper仅在第一次用于添加标记时激发

田志
2023-03-14
    mapview = (MapView) findViewById(R.id.mapview);
    mapview.setTileSource(TileSourceFactory.MAPNIK);
    mapview.setBuiltInZoomControls(true);
    mapview.setMultiTouchControls(true);

    IMapController mapController = mapview.getController();
    mapController.setZoom(16);
    GeoPoint startPoint = new GeoPoint(48.8583, 2.2944);
    mapController.setCenter(startPoint);

    MapEventsReceiver meReceiver = new MapEventsReceiver() {

        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            return false;
        }

        @Override
        public boolean longPressHelper(GeoPoint p) {

            Toast toast = Toast.makeText(getApplicationContext(), "DEBUGDEBUGDEBUG", Toast.LENGTH_LONG);
            toast.show();

            addMarker(p);



            return true;
        }
    };

addMarker-由longpreshelper调用public void addMarker(GeoPoint GeoPoint){

    Drawable dr = getResources().getDrawable(R.drawable.icn_crosshair_red);
    Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
    Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 100, 100, true));

    mapview.getOverlays().clear();
    mapview.invalidate();

    selectedPosMarker = new Marker(mapview);
    selectedPosMarker.setPosition(geoPoint);

    selectedPosMarker.setInfoWindow(null);

    selectedPosMarker.setIcon(d);
    selectedPosMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);


    mapview.getOverlays().add(selectedPosMarker);
    mapview.invalidate();
}

共有1个答案

陈德泽
2023-03-14

我假设您在某个地方添加了一个MapEventsOverlay,在您没有提供的代码中。问题是您在AddMarker中删除了它!:

mapview.getOverlays().clear();

所以它当然不会对第二次长按做出反应...

不要在同一个方法中调用MapView.Invalidate()两次,这既没用又费时。

 类似资料:
  • 问题内容: 我经常使用以下命令在matplotlib图上绘制点: 但是,这会使图例在图例中两次加星,如下所示: 当我真的希望它看起来像: 我该怎么做呢? 问题答案: 这应该工作: 顺便说一句,如果您添加行 到您的matplotlibrc文件中,那么这将是新的默认设置。 [另请参见散点图,具体取决于您的情节。] API:链接到API文档

  • 我是胡克斯的新手,遇到了一些让我追自己尾巴的案例。 希望有人能解释或提供对我有意义的解决方案: > 下面这个线程:如何调用加载函数与反应使用效果只有一次 我试着在没有依赖性的情况下使用useEffect,eslint不喜欢这样,他们建议添加一个“跳过下一行”,这似乎有点骇人:

  • 这是我的代码从标题 我没有活动插件。wp_head有两个过滤器-没有一个用于显示“title”,整个主题代码中也没有其他wp_title或“title”。 关于如何删除第二个标题有什么想法吗?

  • 我尝试做什么: 我希望HashSet中充满程序不知道的新词。用户按下主机上的“转换”按钮。带有单词的文件的路径在主框架上给出。 如果单词是新单词,则会打开一个J对话框并要求插入新单词(因此您可以更改拼写,例如第一个字母大…)。 如果用户按下JDialog上的“写入”按钮,该单词将添加到HashSet中。 但是如果我在那之后打印我的HashSet,则只显示“旧”值。当我第二次按下主框架上的“转换”按

  • 我已经在osmdroid和osm奖金包(惊人的LIB!)上混了一段时间了,我一直在思考离线路由和逐圈导航的想法,现在,我还没有尝试过任何东西,但在组合中加入graphhopper听起来很有希望: 官方维基指南如下: 下载原始地图文件(.osm、.osm.pbf等) 跑/格拉普霍珀。sh导入映射文件 现在,这是为MapsForge设计的,我还没有机会检查结果。ghz文件,包含地图的路由数据,但是我的

  • 问题内容: 我已经这样创建了自己的自定义ArrayList: 当我从JSON API添加数据时,它会多次添加项。我尝试过此代码仅一次添加项目: 如果还尝试这样做: 当我使用ArrayList时此代码有效,但当我使用ArrayList时此代码无效 谁能解释我如何避免清单重复? 问题答案: 正如您在评论中提到的,Order无关紧要,我将有一个to存储并检查和。如果要通过输入来获取,则可以使用,它可以及