谷歌地图Android-仅显示低于特定缩放级别的标记

谷歌地图Android-仅显示低于特定缩放级别的标记,android,google-maps,Android,Google Maps,在过去的几周里,我一直在研究这个问题,但没有有效的答案。谢谢你的帮助 我只想显示低于某个缩放级别的标记。这不仅是为了防止滞后,也是为了防止标记的聚集。标记聚类不是我想要的 请帮忙!以下是我目前的java代码: package us.wingitapp.jared.wingit; import android.Manifest; import android.content.pm.PackageManager; import android.location.Address; import an

在过去的几周里,我一直在研究这个问题,但没有有效的答案。谢谢你的帮助

我只想显示低于某个缩放级别的标记。这不仅是为了防止滞后,也是为了防止标记的聚集。标记聚类不是我想要的

请帮忙!以下是我目前的java代码:

package us.wingitapp.jared.wingit;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
import com.google.android.gms.location.places.ui.PlaceSelectionListener;

import java.io.IOException;
import java.util.List;


public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
PlaceAutocompleteFragment placeAutoComplete;
private static final String TAG = "Main Activity";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    placeAutoComplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete);
    placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {

            Log.i(TAG, "Place Selected: " + place.getName());
            LatLng latLng = place.getLatLng();

            //move map camera
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,11));
        }

        @Override
        public void onError(Status status) {
            Log.d("Maps", "An error occurred: " + status);
        }
    });

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

  //initialize markers here

}


}
创建一个变量来存储标记

列表=新的ArrayList

向其中添加所有标记,如所示

    Marker marker = googleMap.addMarker(new MarkerOptions().position(latlng).title(name).snippet(snippet));
    list.add(marker);
然后设置一个OnCameraChangeListener

此外,初始化此列表中所有标记的优点是,您可以通过提供位置获得任何标记的所有信息,还可以设置微调器来选择标记,并在微调器中选择后将相机移动到该标记。下面的代码可能不是必需的,但并非毫无用处

下面的代码可以帮助从我的项目中复制粘贴

for (Marker m: list) {
            if (m.getTitle().equals(selection)) {
                m.showInfoWindow();
                CameraPosition cameraPosition = new CameraPosition.Builder().target(m.getPosition()).zoom(14).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                break;
            }
        }
这里的选择是从微调器的onItemClickListener传递的字符串,您还可以将上述代码放入方法中,将方法调用放入微调器的onItemClickListener中,并通过此方法调用传递字符串


尽管如此,还是有遗漏,请尽管问。

非常感谢您的帮助!你保存了我的应用程序!没问题。
for (Marker m: list) {
            if (m.getTitle().equals(selection)) {
                m.showInfoWindow();
                CameraPosition cameraPosition = new CameraPosition.Builder().target(m.getPosition()).zoom(14).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                break;
            }
        }