【问题标题】:Google Maps Android API Removing markers when switching floorsGoogle Maps Android API 在切换楼层时删除标记
【发布时间】:2017-04-18 18:46:59
【问题描述】:

我正在开发一个需要室内地图的 Android 应用项目。我使用的位置在谷歌地图上有可用的楼层。我正在使用 Google Maps 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));
    }
}

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:
        //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));
    

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

    【讨论】:

    • 感谢您的回复。我不确定这是怎么回事。我将它添加到 onMapReady() 并显示错误。有什么方法可以实现吗?这需要附加到楼层选择器按钮吗?
    • 当您单击楼层选择器按钮时,只需使用@here、markerOptions.clear()清除创建的标记
    【解决方案2】:

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

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

    希望对你有帮助。

    【讨论】:

    • 我无法找到将 .clear() 附加到的位置。我正在查看文档,对楼层选择器的唯一参考是: setIndoorLevelPickerEnabled(true);他们是事件监听器还是我需要添加到我的代码中的东西?我不知道我应该去哪里看。我没有看到任何关于如何添加任何内容来单击这些特定按钮的参考。
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2012-07-20
    • 2012-05-24
    • 2014-08-04
    • 2013-05-02
    • 2014-11-12
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多