【问题标题】:Android google maps change circle radius smoothlyAndroid google maps 平滑地改变圆半径
【发布时间】:2016-10-26 17:45:39
【问题描述】:

我有一张地图,我需要在其中画圆。问题是圆应该可以调整大小(例如我有一个seekbar 并且基于seekbar 值,我应该看到我的圆的大小(半径)是如何变化的)。我知道如何画一个圆圈,但我无法想象如何让圆圈动态调整大小。有可能吗?

在这里编辑我如何将圆圈添加到我的地图

@Override
    public void onMapClick(LatLng latLng) {
        mMap.addCircle(new CircleOptions()
                .center(latLng)
                .radius(100)
                .strokeWidth(0)
                .fillColor(0x66aaaFFF));
    }

如您所见,每次单击地图时,我都将半径设置为 100。然而,半径应该改变,圆应该根据搜索栏值平滑绘制

【问题讨论】:

标签: android google-maps


【解决方案1】:

您可以在OnSeekBarChangeListeneronProgressChanged 上使用setRadius 方法更改圆半径,使其可调整大小:

private Circle circle;

circle = mMap.addCircle(new CircleOptions()
    .center(new LatLng(52, 5))
    .fillColor(Color.RED)
    .radius(100));

AppCompatSeekBar progress = (AppCompatSeekBar) findViewById(R.id.progress);
progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        circle.setRadius(progress);
    }

    @Override
    public void onStartTrackingTouch(final SeekBar seekBar) {
    }

    @Override
    public void onStopTrackingTouch(final SeekBar seekBar) {
    }
});

但是,有一个相关的未解决的已知 Google 地图错误 (Issue 5707: Bug: Circle filling flickers on fast circle radius and center update) 会导致填充闪烁。

更新:

issue 5707 已经solved on October 24, 2016

【讨论】:

  • 感谢您的回答,遗憾的是,由于闪烁,这对我来说不是解决方案。也许有另一种方法可以做到这一点?
  • 不幸的是,由于我提到的错误,使用 map Circles 是不可能的。您可以在地图上的View 上画一个圆圈并在那里绘制和更新您的圆圈,但是您的View 和地图之间的同步将非常棘手(缩放、旋转和倾斜地图将迫使您手动更新你的View)。我认为最好的选择是等待bug解决。
  • 感谢您的回答,遗憾的是这个错误已经 3 岁了:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2019-08-02
  • 2016-03-16
  • 1970-01-01
相关资源
最近更新 更多