Google Maps Android API在切换楼层时删除标记

时间:2017-04-18 18:46:59

标签: java android google-maps

我正在研究需要室内地图的Android应用项目。我使用的位置在Google地图上提供了楼层。我正在使用谷歌地图Android API。我在初始级别上设置了标记。当我切换地板时,如何删除/隐藏这些标记并用新标记替换它们? 这是我的java代码:

package com.me.maps;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

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.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }



    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Milwaukee, Wisconsin.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng mpm = new LatLng(43.0408468, -87.921474);
        LatLng planetarium = new LatLng(43.040622,-87.920798);
        LatLng theater = new LatLng(43.040497,-87.920640);
        LatLng marketplace = new LatLng(43.040779,-87.921717);
        mMap.addMarker(new MarkerOptions().position(mpm).title("Milwaukee Public Museum"));
        mMap.addMarker(new MarkerOptions().position(planetarium).title("The Daniel M. Soref National Geographic Planetarium"));
        mMap.addMarker(new MarkerOptions().position(theater).title("The Daniel M. Soref National Geographic Theater"));
        mMap.addMarker(new MarkerOptions().position(marketplace).title("Museum Marketplace"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mpm, 18));
    }
}

2 个答案:

答案 0 :(得分:0)

    //Place current location marker
    latitude = location.getLatitude();
    longitude = location.getLongitude();
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title("Current Position");
    BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.doctor);
    markerOptions.icon(icon);
    mCurrLocationMarker = mMap.addMarker(markerOptions);

    //move map camera
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    mMap.animateCamera(CameraUpdateFactory.zoomTo(11));

使用此代码用于更改标记图标。

答案 1 :(得分:0)

切换地板时,您的应用应清除地图上已有的标记。使用google地图实例的.clear()方法,然后仅添加与该楼层相关的标记。

可以在以下网址找到此方法的文档:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap

希望它有所帮助。