首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标记消失

标记消失
EN

Stack Overflow用户
提问于 2018-04-16 15:58:28
回答 1查看 139关注 0票数 1

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

代码语言:javascript
复制
 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);
                    } 
                }
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 16:26:25

根据你所提供的,这就是我能收集到的。

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

你在你的活动中保存这些标记吗?例如,在ArrayList中?

我有两个建议:

1)在while语句之前调用mMap.clear()。这将清除映射中的任何标记,然后在创建这些标记时添加新标记。

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

代码语言:javascript
复制
for (Marker marker: mMarkerArrayList) {
    if (outOfRange()) {
        marker.visible(false);
    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49861568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档