【问题标题】:Dotted circle route path like google map像谷歌地图一样的虚线圆圈路线路径
【发布时间】:2017-01-05 09:34:00
【问题描述】:

我想要一个像上面的虚线圆圈路线路径那样的地图 UI。我通过网络搜索了很多,堆栈溢出我找不到任何来源。

我试过了

  • addCircle 折线,但当我将相机缩放到 谷歌地图的扩展

  • 我不知道谷歌地图是如何使用标记或 折线

感谢提供的帮助而不是反对!!

谢谢 :-)

【问题讨论】:

  • 在这里看看我的项目github.com/antoniocarlon/richmaps
  • map.addCircle(CircleOptions) 或添加 overlayView 以使用 Paint.setPathEffect(new DashPathEffect(new float[] {10,20}, 0));
  • @Qamar 你能把画布覆盖视图的链接或示例发送给我吗?我使用 addCircle UI 不好,但是在网上搜索时我开始了解覆盖,但我找不到示例或链接。谢谢
  • 添加许多形状相似的圆形或多边形
  • addCircle 看起来不太好,如果我放大地图,圆圈会变得更大

标签: android google-maps marker polyline


【解决方案1】:

您可以将Stroke Patterns 用于这样的折线:

@Override
public void onMapReady(GoogleMap googleMap) {
    List<LatLng> sourcePoints = new ArrayList<>();
    sourcePoints.add(new LatLng(22.724526, 75.825979));
    sourcePoints.add(new LatLng(22.720165, 75.905953));
    sourcePoints.add(new LatLng(22.766649, 76.075773));
    sourcePoints.add(new LatLng(22.862032, 76.098302));

    PolylineOptions polyLineOptions = new PolylineOptions();
    polyLineOptions.addAll(sourcePoints);
    polyLineOptions.width(50f);
    polyLineOptions.color(Color.rgb(0, 178, 255));
    Polyline polyline = googleMap.addPolyline(polyLineOptions);

    List<PatternItem> pattern = Arrays.<PatternItem>asList(new Dot(), new Gap(10f));
    polyline.setPattern(pattern);

    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(sourcePoints.get(2))
            .zoom(14)                   
            .build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

}

得到这样的结果:

不幸的是,由于Dot() 和Gap() 大小之间的非线性依赖性,不可能在较小的圆圈下绘制更大的圆圈以实现“有边界”的圆圈路径。

或者您可以通过覆盖MapView 中的dispatchDraw() 来在MapVew 画布上绘制任何您想要的东西,例如this 答案(大约是MapBox MapView,但该方法适用于谷歌地图MapView也)。

【讨论】:

    【解决方案2】:

    我认为它有点矫枉过正,但您可以使用来自https://console.developers.google.com/apis/library 的一些 Google API

    并获取路径并从中制作一组LatLng,然后像普通标记一样在googleMap上绘制它们,但用小圆作为图标。

    说实话,我不确定你想要实现什么,我认为更简单的想法是使用起点和目的地并在 GoogleMaps Android 应用程序中打开它 - 不要重新发明轮子。

    【讨论】:

    • 我使用了 api,并且我已经掌握了我需要在谷歌地图上绘制的所有要点
    • 唯一的事情是我希望我的用户界面看起来像上面的图片我不知道谷歌是使用制造商还是折线来实现这个视图
    • 您可以在每 2 个点之间“制作”额外的纬度,例如点 (x1,y1) 和 (x2,y2) 您可以在坐标 ([x1+x2]/2 , [y1+y2]/2) 等等。
    • 我有我的全部观点,就像你所说的中间 ([x1+x2]/2, [y1+y2]/2) 点。我的问题是如果你去扔谷歌地图方向虚线路线我想知道他们是用标记表示点还是用折线表示点
    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多