【问题标题】:Markers disappear标记消失
【发布时间】:2018-04-16 15:58:28
【问题描述】:

当我在范围内时,我试图在地图上设置可见标记,当我不在范围内时设置不可见。当移动并进入区域标记出现 - 但当我离开范围标记仍然可见。这是我的代码onLocationUpdate。 我遍历我的数据库并添加标记。 getDeviceLocation 返回Ltglng 与我当前的位置。我也为 GPS 提供商实现了这一点。任何想法都会有所帮助!

 locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                Cursor res = activityA.myDB.getAllData();
                while (res.moveToNext()) {

                    double ltd = Double.valueOf(res.getString(3));
                    double lng = Double.valueOf(res.getString(4));
                    LatLng hole = new LatLng(ltd, lng);
                    Marker marker = mMap.addMarker(new MarkerOptions().position(hole)
                            .title(res.getString(1)).visible(false));

                 if (SphericalUtil.computeDistanceBetween(getDeviceLocation(), marker.getPosition()) <3 ) {
                        marker.setVisible(true);
                    } 
                }
            }

【问题讨论】:

    标签: android sqlite google-maps marker


    【解决方案1】:

    根据您提供的信息,我可以收集到这些信息。

    您正在添加标记(最初设置为不可见),然后如果它符合您的 if 语句,则使它们不可见。问题是,我看不到任何可以让它们再次隐形或移除它们的地方。

    您是否将这些标记保存在您的活动中?例如在 ArrayList 中?

    我有两个建议:

    1) 在您的 while 语句之前调用 mMap.clear()。这将清除地图上的所有标记,然后在创建新标记时添加它们。

    2) 将所有标记保存在 ArrayList 中,然后在 onLocationChanged 中,使用 for 循环遍历所有标记并使超出范围的标记不可见。这是一个例子:

    for (Marker marker: mMarkerArrayList) {
        if (outOfRange()) {
            marker.visible(false);
        }
    }
    

    这里的 mMarkerArrayList 是包含所有标记的 ArrayList。 outOfRange() 是一个辅助函数,如果标记为 outOfRange,则返回布尔值。

    【讨论】:

    • 我将我的标记保存在数据库中。现在尝试将它们添加到列表中,但只有当我刷新地图时它才会消失,而不是当我超出范围时。现在将尝试使用地图清除@Khash
    • 有了 mMap.clear() 它以某种方式工作。我找不到任何逻辑为什么它不能以其他方式工作但现在可以了。非常感谢@Khash!
    • 如果不查看所有代码,很难说为什么您尝试的第一种方法不起作用。但我很高兴 clear() 方法有效。
    猜你喜欢
    • 2012-05-02
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2013-04-25
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多