在 MapBox 上隐藏和显示标记
Posted
技术标签:
【中文标题】在 MapBox 上隐藏和显示标记【英文标题】:Hide and show markers on MapBox 【发布时间】:2017-06-28 09:07:42 【问题描述】:当我开始这个时,我认为这是一个相当微不足道的功能,但我一直在努力实现这一目标:
在 android 上的 MapBox 地图上,我想在缩小(以特定缩放级别)时隐藏所有标记,并在放大时再次显示它们。
我找不到任何选项来隐藏(将可见性设置为 false)标记。所以我删除它们并再次添加它们:
private void hideMarkers()
if (!markersHidden)
mapBoxMap.clear();
markersHidden = true;
private void showMarkers()
if (markersHidden)
markersHidden = false;
for (Point point : markerMap.values())
addMapMarker(point);
public void addMapMarker(Point point)
if (point == null) return;
markerMap.put(point.id, point);
if (markersHidden) return;
MarkerOptions markerOptions = new MarkerOptions()
.position(new LatLng(point.location.latitude, point.location.longitude))
.setSnippet(point.id)
.icon(IconUtils.drawableToIcon(getContext(), presenter.getMapIcon(point.provider).getMapIcon(point)))
.title(point.name);
mapBoxMap.addMarker(markerOptions);
markerMap
是一个 HashMap,我在其中保存我的 Point 引用。
这些方法做他们应该做的事情。 markerMap
保留引用,并将它们正确添加到地图中。
但是,它们没有显示出来。
为什么它们在添加到地图后没有显示在地图上? 我该怎么做才能再次显示标记? 除了删除和添加标记之外,还有其他方法可以实现隐藏和显示标记吗?
我使用的 MapBox 版本是com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar
。
【问题讨论】:
【参考方案1】:我认为只有使用MarkerView
才能设法隐藏和显示标记。作为概念教授,这里有一段代码显示了它是如何通过 setVisibility
方法工作的
markerView = map.addMarker(new MarkerViewOptions()
.anchor(.5f, .5f)
.icon(IconFactory.getInstance(getApplicationContext()).fromResource(R.drawable.mapbox_marker_icon_default))
.position(stuttgartLoc));
CameraUpdate cameraNewPosition = CameraUpdateFactory
.newLatLngZoom(stuttgartLoc, 17);
map.animateCamera(cameraNewPosition);
new Handler().postDelayed(new Runnable()
@Override
public void run()
markerView.setVisible(false);
, 5000);
new Handler().postDelayed(new Runnable()
@Override
public void run()
markerView.setVisible(true);
, 10000);
【讨论】:
以上是关于在 MapBox 上隐藏和显示标记的主要内容,如果未能解决你的问题,请参考以下文章