如何根据Google Maps v2上的缩放级别显示或消除标记

时间:2013-10-02 09:51:51

标签: android google-maps zoom google-maps-markers android-maps-v2

我们都知道Google地图上的某些预定义地标不会出现在较低的缩放级别,但是在较高的缩放级别上会突然出现。我想知道如果我可以制作一个自定义标记不会出现在较低的缩放级别,然后出现在较高的缩放级别。

编辑:这是我的代码片段。

 // Changing marker icon
   marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.gasbig));


   // adding marker
  map.addMarker(marker);

  //position on Center

  CameraPosition cameraPosition = new CameraPosition.Builder().target(
          new LatLng(14.635356, 121.03272914)).zoom(16).build();

  map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

  map.setOnCameraChangeListener(new OnCameraChangeListener() {

        @Override
        public void onCameraChange(CameraPosition arg0) {
            if(arg0.zoom > 7){
                marker.visible(true);

            }


        }
    });

我尝试了MaciejGórski的建议,但标记仍然出现在所有缩放级别上。我很抱歉这个问题我还是个新手。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以为所需的任何Marker执行此操作:使用setVisibleOnCameraChangeListener.onCameraChangetrue回调中呼叫false,具体取决于CameraPosition.zoom

编辑问题后修改:

您需要保留对Marker的引用,而不是MarkerOptions

// adding marker
marker = map.addMarker(markerOptions);

并在setVisible上致电marker

    @Override
    public void onCameraChange(CameraPosition cameraPosition) {
        marker.setVisible(cameraPosition.zoom > 7);
    }

注意:setVisible总是在那里调用,但在使用许多Marker时这可能不是最佳的。

答案 1 :(得分:0)

您可以通过修改我的答案来完成:Android Maps v2 - animate camera to include most markers

否则使用Android Maps Extensions可能是个不错的选择。但是没有经验满足您的特定需求。

刚才意识到我可能误解了这个问题。以为你的意思是自己的标记。不过看看扩展库。很可能他们有一些有用的东西。