我希望(在我的Android应用中使用Google maps api v2)根据类别隐藏或显示我的GoogleMap对象上的标记,就像在google maps web api中一样,例如:
我有一个包含50个标记的GoogleMap,其中20个代表餐馆,20个代表公交车站,10个是电影院。
如果我们取消勾选一个复选框,是否可以在Android google maps api v2上对这些标记进行过滤,隐藏所有餐馆标记?
我想做类似的事情但是在我的Android设备上使用google maps api v2:http://www.geocodezip.com/v3_MW_example_categories.html
对不起基本问题,但我是初学者。
答案 0 :(得分:24)
试试这种方式。
Marker restuarantMarkers = gMap.addMarker(new MarkerOptions()
.position(latlng)
.title("MyPlace").icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pin)).draggable(true));
点击活动
restuarantMarkers.setVisible(false);
这种方式可以使用循环..
让我知道它是否适合你。
答案 1 :(得分:2)
如果要过滤您的位置,可以使用对话框。
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();
答案 2 :(得分:0)
是的,你可以!这就是......
// mMap是一个已经初始化的GoogleMap实例
mMap.setOnCameraChangeListener(getCameraChangeListener());
getCameraChangeListener()
public OnCameraChangeListener getCameraChangeListener()
{
return new OnCameraChangeListener()
{
@Override
public void onCameraChange(CameraPosition position)
{
addItemsToMap(this.items);
}
};
}
//您的“Item”类至少需要一个唯一的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());
}
}
}
}
}
答案 3 :(得分:0)
在这里,LocationArray是位置的ArrayList,它们绘制在地图上。我们要显示地图上绘制的所有标记。
private void FitAllMarkers() {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (int i = 0; i < LocationArray.size(); i++) {
builder.include(new LatLng(Double.parseDouble(LocationArray.get(i).getLat()), Double.parseDouble(LocationArray.get(i).getLng())));
}
LatLngBounds bounds = builder.build();
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
}