java - 如何在 Mapbox 中将折线叠加添加到静态图像?

标签 java android mapbox mapbox-android

我正在尝试将带有路线的 map 保存为静态图像。目前,我可以将 map 另存为静态 map ,并将一些注释作为叠加层,但我无法弄清楚如何将路线添加到静态 map 。

这是我目前拥有的代码:

List<StaticMarkerAnnotation> markers = new ArrayList<>();
List<StaticPolylineAnnotation> polylines = new ArrayList<>();

markers.add(StaticMarkerAnnotation.builder().name(StaticMapCriteria.LARGE_PIN)
             .lnglat(Point.fromLngLat(pointList.getFirst().longitude(), pointList.getFirst().latitude()))
             .label("a")
             .build());

markers.add(StaticMarkerAnnotation.builder().name(StaticMapCriteria.LARGE_PIN)
             .lnglat(Point.fromLngLat(pointList.getLast().longitude(),pointList.getLast().latitude()))
             .label("b")
             .build());

polylines.add(StaticPolylineAnnotation.builder().polyline(currentRoute.geometry()).build()); // DirectionsRoute currentRoute

String staticImage = MapboxStaticMap.builder()
             .accessToken(getString(R.string.mapbox_access_token))
             .width(mapView.getMeasuredWidth())
             .height((int) (250*getResources().getDisplayMetrics().density))
             .retina(true)
             .cameraAuto(true)
             .staticMarkerAnnotations(markers)
             .staticPolylineAnnotations(polylines) // does not work!
             .build()
             .url()
             .toString();

如果没有.staticPolylineAnnotations(polylines),它会成功创建静态图像(没有路线)。使用 .staticPolylineAnnotations(polylines),创建的 staticImage 字符串结果为 {"message":"Latitude must be between -85.0511-85.0511."}。

我想我错误地传递了我的当前路线,但我不知道正确的方法。

最佳答案

要在 Android 中获取路线图像,首先将所有纬度和经度添加到列表中,然后借助 Google 折线编码技术将完整的纬度和经度列表转换为编码折线字符串。

-> 创建 map 盒帐户并使用有效 token 的 map 盒静态图像 API

-> 现在使用 StaticPolylineAnnotation:

List{StaticPolylineAnnotation} list1 = new ArrayList<>(); (将 {} 替换为 <>)list.add(StaticPolylineAnnotation.builder().polyline(polilineString).StrokeWidth(1.0).StrokeColor(56, 69, 181).build());注意:PolilineString 是您从 Google Poly line Encoding 技术获得的编码字符串

-> MapboxStaticMap staticImage = MapboxStaticMap.builder().user("mapboxaccountusename") .accessToken("Mapbox token ") .styleId("您的样式 id") .staticPolylineAnnotations(list1) .cameraAuto(true) .retina( true) .build();

->使用 String imageUrl = staticImage.url().toString(); 获取图像的 url

关于java - 如何在 Mapbox 中将折线叠加添加到静态图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60252417/

相关文章:

android - onSomeEventListener 崩溃

Mapbox gl js - 基于多个条件的自定义图标

java - SWIG C++ 结构到 java

java - 如何从我的 ArrayList 中删除也在 Java 中的其他 ArrayList 中的对象?

java - 增加转换大小

mapbox - 如何启用默认 Mapbox POI 标记的点击?

android - Android map 框 : Changing color of a marker's icon

java - 为什么我的继承申请不起作用?

java - Android Switch 语句崩溃

Android 如何将与 ListView 项目相关的数据从 sqlite 数据库传递到下一个 Activity