【问题标题】:Load only two markers on Google map in Android在 Android 的谷歌地图上只加载两个标记
【发布时间】:2018-04-25 19:58:58
【问题描述】:

我只需要在google map 上加载两个标记,但加载了多个标记。

下面是我的代码:

public class MainActivity extends FragmentActivity {
        GoogleMap map;

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

        // Getting reference to SupportMapFragment of the activity_main
        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

        // Getting Map for the SupportMapFragment
        map = fm.getMap();

        if (map != null) {

            // Enable MyLocation Button in the Map
            if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != 
                                                    PackageManager.PERMISSION_GRANTED 
                                                    && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != 
                                                    PackageManager.PERMISSION_GRANTED) {
                return;
            }
            map.setMyLocationEnabled(true);

            //It is used to zoom when google first loading on your device.
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(23.0310791, 72.5954376), 11));
            map.setMyLocationEnabled(true);
            map.animateCamera(CameraUpdateFactory.zoomTo(11));            
        }

        map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {

                // Creating a marker
                MarkerOptions markerOptions = new MarkerOptions();

                // Setting the position for the marker
                markerOptions.position(latLng);

                // Placing a marker on the touched position
                map.addMarker(markerOptions);

            }
        });
    }
}

我已经实现了google map API 来加载地图,上面是我正在尝试加载的标记。它根据提供的经纬度加载标记,但我只需要在我的谷歌地图上绘制两个标记。

【问题讨论】:

  • 当有人点击地图时,您已经添加了标记。因此,只要您单击它,就会在地图上放置该数量的标记。那么你想在放置新标记时删除以前的标记吗?
  • 检查此答案是否适合您stackoverflow.com/a/35770711/3514144

标签: android google-maps google-maps-markers


【解决方案1】:

我的想法是,在地图上放置 2 个标记,然后在每次点击地图时继续更改位置重要:将新位置设置为旧标记。

    map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        boolean swap;
        Marker firstMarker = null, secondMarker = null;
        @Override
        public void onMapClick(LatLng latLng) {

            if (firstMarker == null) {
                MarkerOptions options = new MarkerOptions();
                options.position(latLng);
                firstMarker = map.addMarker(options);
                return;
            }

            if (secondMarker == null) {
                MarkerOptions options = new MarkerOptions();
                options.position(latLng);
                secondMarker = map.addMarker(options);
                return;
            }
            swap = !swap;
            if (swap) {
                firstMarker.setPosition(latLng);
            } else {
                secondMarker.setPosition(latLng);
            }
        }
    });

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 2015-01-10
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多