是否有可能显示/隐藏Android谷歌地图API V2中的标记?

我想(在我的Android应用程序中使用Google maps api v2)根据类别隐藏或显示我的GoogleMap对象上的标记,就像在google maps web api中一样,例如:

我有一个带有50个标记的GoogleMap,其中20个代表餐厅,20个代表巴士站,10个是电影院。

是否有可能在Android谷歌地图api v2做这些标记过滤,通过隐藏所有的餐馆标记,如果我们取消勾选checkbox例如?

我想这样做,但在我的Android设备上使用谷歌地图api v2: http : //www.geocodezip.com/v3_MW_example_categories.html

对不起,基本的问题,但我是一个初学者。

Solutions Collecting From Web of "是否有可能显示/隐藏Android谷歌地图API V2中的标记?"

试试这个方法。

Marker restuarantMarkers = gMap.addMarker(new MarkerOptions() .position(latlng) .title("MyPlace").icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pin)).draggable(true)); 

点击事件

  restuarantMarkers.setVisible(false); 

这种方式可以使用循环..

请让我知道这对你有没有用。

如果你想过滤你的位置,你可以使用对话框。

 final Dialog dialog = new Dialog(context); dialog.setContentView(R.layout.dialog); Button bt_ok = (Button) dialog.findViewById(R.id.button1); final CheckBox cb1 = (CheckBox) dialog.findViewById(R.id.checkBox1); final CheckBox cb2 = (CheckBox) dialog.findViewById(R.id.checkBox2); dialog.setTitle("Category"); bt_ok.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { mMap.clear(); if (cb1.isChecked()){ mMap.addMarker(new MarkerOptions().position(new LatLng(44.109798, 15.242270)).title("Pin").icon(BitmapDescriptorFactory.fromResource(R.drawable.museum))); } if (cb2.isChecked()){ mMap.addMarker(new MarkerOptions().position(new LatLng(44.209798, 15.392270)).title("Pin 2").icon(BitmapDescriptorFactory.fromResource(R.drawable.restaurants))); } dialog.dismiss(); } }); dialog.show(); 

是的你可以! 而这里是如何…

// mMap是已经在其他地方初始化的GoogleMap的一个实例

 mMap.setOnCameraChangeListener(getCameraChangeListener()); getCameraChangeListener() public OnCameraChangeListener getCameraChangeListener() { return new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition position) { addItemsToMap(this.items); } }; } 

//你的“Item”类将至less需要一个唯一的id,纬度和经度。

 private void addItemsToMap(List<Item> items) { if(this.mMap != null) { LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds; for(Item item : items) { if(bounds.contains(new LatLng(item.getLatitude(), item.getLongitude())) { if(!courseMarkers.containsKey(item.getId())) { this.courseMarkers.put(item.getId(), this.mMap.addMarker(getMarkerForItem(item))); } } else { if(courseMarkers.containsKey(item.getId())) { courseMarkers.get(item.getId()).remove(); courseMarkers.remove(item.getId()); } } } } }