【问题标题】:Add an end marker on button press在按钮按下时添加结束标记
【发布时间】:2018-08-21 21:34:11
【问题描述】:

我有一个 android 应用程序,它可以获取我的位置并在其上显示一个标记。它还在本地跟踪设备位置并在其上绘制和标记,它还将标记与折线连接(这仅用于准确性测试)。

我的问题是,当我按下 Finish Journey 按钮时,我如何让它显示一个标记,说明结束位置或类似的东西。

@Override
public void onLocationChanged(final Location location) {

    //Adds a marker on the current position found in LatLng
    final LatLng myCoordinates = new LatLng(location.getLatitude(), location.getLongitude());
    LocationMarker.setPosition(myCoordinates);
    mMap.moveCamera(CameraUpdateFactory.newLatLng(myCoordinates));
    float zoomLevel = 12.0f;
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myCoordinates, zoomLevel));

    //Adds marker on each location update
    points.add(myCoordinates);
    mMap.addMarker(new MarkerOptions().position(myCoordinates));

        mMap.addPolyline(new PolylineOptions()
                .addAll(points)
                .width(5)
                .color(Color.RED));

    //Button used to get and display ending location
    Button stopLocBtn;
    stopLocBtn = (Button) findViewById(R.id.stopLocBtn);
    stopLocBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final LatLng myendCoordinates = new LatLng(location.getLatitude(), location.getLongitude());
            points.add(myendCoordinates);

            LocationMarker.setPosition(myendCoordinates);
            mMap.addMarker(new MarkerOptions()
                    .position(myendCoordinates)
                    .title("End location"));

            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, TrackingActivity.this);
        }
    });
}

这就是我的 onLocationChanged 函数的样子。我的位置更新被保存在一个名为 points 的 Global ArrayList 中。

【问题讨论】:

  • 你有什么问题?
  • 我想在按下按钮时为结束位置添加一个标记。

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


【解决方案1】:
  1. 你把LatLng myCoordinates作为一个全局变量来存储onLocationChange中的最后一个位置

    LatLng myCoordinates;
    @Override
    public void onLocationChanged(final Location location) {
      myCoordinates = new LatLng(location.getLatitude(), location.getLongitude());
    });
  1. 点击finished journey按钮时绘制标记
  2. onCreate的Activity中声明完成按钮

//Button used to get and display ending location
    Button stopLocBtn;
    stopLocBtn = (Button) findViewById(R.id.stopLocBtn);
    stopLocBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            points.add(myCoordinates);

            LocationMarker.setPosition(myCoordinates);
            mMap.addMarker(new MarkerOptions()
                    .position(myCoordinates)
                    .title("End location"));

            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, TrackingActivity.this);
        }
    });

【讨论】:

  • 我已经完成了,但它并没有改变输出。发生的事情是标记下的蓝点不会从原始位置移动,但折线会在新位置更新上绘制。有什么想法吗?
  • 你使用变量为isStoped = false,当完成按钮被按下时,isStoped = true,如果为true,地图不绘制标记和折线,如果为false,继续绘制折线。
  • 当我按下按钮时,折线停止了。问题是它只放置一个标记。我希望在启动应用程序时放置一个,在完成时放置一个。
【解决方案2】:

您的意思是创建不同颜色或样式的标记吗?您可以在 MakerOptions 上设置图标。

尝试使用 BitmapDescriptorFactory.defaultMarker(float hue) 和 BitmapDescriptorFactory.HUE_xxx 值之一创建新图标。

【讨论】:

  • 不,我有不同的样式标记。当我按下完成旅程按钮时,我希望在最后一次位置更新上放置一个标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多