如何在点击按钮setMyLocationEnabled后直接在GoogleMap上添加标记?

时间:2016-09-21 13:40:35

标签: android google-maps

我做了一个代码。 在此代码中,当我单击地图时,单击的点上将有一个标记。

这是我的代码

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(final GoogleMap googleMap) {
        mMap = googleMap;
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mMap.setMyLocationEnabled(true);
        } else {
            Toast.makeText(getApplicationContext(), "oh, no", Toast.LENGTH_LONG).show();
        }
        googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng point) {
                String lat = String.valueOf(point.latitude);
                String lng = String.valueOf(point.longitude);
                MarkerOptions marker = new MarkerOptions().position(
                        new LatLng(point.latitude, point.longitude)).title("ok");
                mMap.addMarker(marker);
            }
        });
    }
}

问题: 我想要的是,当我单击SetMylocationEnable按钮时,还添加了一个新标记。而且因为我希望标记在整个地图中只有一个,所以之前在地图中的另一个标记将被删除。我该怎么做?你能教我吗?

你可以在图片中看到我说的是什么按钮。 (图片来自:Enable my location icon Googlemap v2

enter image description here

2 个答案:

答案 0 :(得分:1)

mMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() {
    @Override
    public boolean onMyLocationButtonClick() {
        Location location = getLocation();
        MarkerOptions marker = new MarkerOptions().position(
                new LatLng(location.getLatitude(), location.getLongitude())).title("ok");
        mMap.addMarker(marker);
        return true;
    }
});

private Location getLocation() {
    LocationManager locationManager = (LocationManager)
            getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    return locationManager.getLastKnownLocation(locationManager
            .getBestProvider(criteria, false));

}

答案 1 :(得分:1)

保留对标记的引用,如果引用为null则创建标记,如果不是,则编辑标记并更改其位置