mapbox java 服务

java-service

1. 线条简化(Simplify)

减少(reduces)构成线条的坐标点数量(amount),通过一个容忍(tolerance)的偏差值。

  List<Point> after = PolylineUtils.simplify(points, 0.001); 

PolylineUtils 包名 com.mapbox.geojson.utils ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-geojson:5.5.0

PolylineUtils 中几个关键的方法:

simplifyRadialDist(List<Point> points, double sqTolerance) 根据距离先简化一次,相邻两个点的距离小于容忍值的时候,后面的点被舍弃掉。

getSqDist(Point p1, Point p2)  两个点距离的简单计算,没有开根。

simplifyDouglasPeucker(List<Point> points, double sqTolerance)  添加原线路首尾点,再利用 simplifyDpStep 方法处理

simplifyDpStep(List<Point> points, int first, int last, double sqTolerance, List<Point> simplified)  一个递归简化的方法

getSqSegDist(Point point, Point p1, Point p2)  点到后面两个点构成的线段距离,没有开根。

2. 匹配相似道路(Matching)

把一条GPS定位路线校准到道路上。

  // Setup the request using a client.
  MapboxMapMatching client = MapboxMapMatching.builder()
      .accessToken(Objects.requireNonNull(Mapbox.getAccessToken()))
      .profile(PROFILE_DRIVING)
      .coordinates(points)
      .build();

  client.enqueueCall(new Callback<MapMatchingResponse>() { });

MapboxMapMatching 包名 com.mapbox.api.matching.v5 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

MapMatchingService 对应的 Retrofit 网络请求接口定义。

整个包里的内容使用 AutoValue 很多。

3. 导航线路获取(Directions)

  MapboxDirections client = MapboxDirections.builder()
    .origin(origin)
    .destination(destination)
    .overview(DirectionsCriteria.OVERVIEW_FULL)
    .profile(DirectionsCriteria.PROFILE_DRIVING)
    .accessToken(getString(R.string.access_token))
    .build();

  client.enqueueCall(new Callback<DirectionsResponse>() { });

MapboxMapMatching 包名 com.mapbox.api.directions.v5 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

DirectionsService 对应的 Retrofit 网络请求接口定义。

model数据不像matching也在mapbox-sdk-services中,单独写在了 com.mapbox.mapboxsdk:mapbox-sdk-directions-models:5.5.0

4. 多条导航线路最优化(Optimized Directions)

  MapboxOptimization optimizedClient = MapboxOptimization.builder()
    .source(FIRST)
    .destination(ANY)
    .coordinates(coordinates)
    .overview(DirectionsCriteria.OVERVIEW_FULL)
    .profile(DirectionsCriteria.PROFILE_DRIVING)
    .accessToken(Mapbox.getAccessToken() != null ? Mapbox.getAccessToken() : getString(R.string.access_token))
    .build();

  optimizedClient.enqueueCall(new Callback<OptimizationResponse>() { });

MapboxOptimization 包名 com.mapbox.api.optimization.v1 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

OptimizationService 对应的 Retrofit 网络请求接口定义。

整个包里的内容使用 AutoValue 很多。

5. 静态地图(MapboxStaticMap)

  MapboxStaticMap staticMap = MapboxStaticMap.builder()
    .accessToken(getString(R.string.access_token))
    .styleId(styleUrl)
    .cameraPoint(Point.fromLngLat(cameraPosition.target.getLongitude(),
      cameraPosition.target.getLatitude()))
    .cameraZoom(cameraPosition.zoom)
    .cameraPitch(cameraPosition.tilt)
    .cameraBearing(cameraPosition.bearing)
    .width(width)
    .height(height)
    .retina(true)
    .build()

  String imgPath = staticMap.url().toString();

MapboxStaticMap 包名 com.mapbox.api.staticmap.v1 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

没有网络请求,直接生成的一个url链接,这里给一个 imgPath 的示例:

https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/122.426582,6.071399,3.000000,-0.000000,0.000000/1080x903@2x?access_token=sk.eyJ1IjoieXVhbi1tbCIsImEiOiJjbGl0bnl3amIwNXc2M2RsZmNmN2hrczQyIn0.OyEHezjFlJpWXYaaGquWCQ&logo=false&attribution=false

https://api.mapbox.com/ 是baseUrl,
styles 固定,v1 固定,
mapbox 是user,streets-v11 是地图样式id(styleId),
static 固定,
122.426582,6.071399,3.000000,-0.000000,0.000000 是中心点经纬度、级别、旋转、俯仰,这部分也可以是auto,
1080x903@2x 是宽高还有retina,retina的放大之后会清晰些,
access_token 参数,
logo 参数,只能是true或者false,是否在左下角显示logo,
attribution 参数,只能是true或者false,是否在右下角显示attribution,

6. 检索多个点之间的距离(Matrix API)

  MapboxMatrix directionsMatrixClient = MapboxMatrix.builder()
    .accessToken(getString(R.string.access_token))
    .profile(DirectionsCriteria.PROFILE_DRIVING)
    .coordinates(pointList)
    .build();

  directionsMatrixClient.enqueueCall(new Callback<MatrixResponse>() { });

  // 距离长度的单位转换,米,英尺等
  TurfConversion.convertLength(@FloatRange(from = 0) double distance,
                                   @NonNull @TurfUnitCriteria String originalUnit,
                                   @Nullable @TurfUnitCriteria String finalUnit)

MapboxMatrix 包名 com.mapbox.api.matrix.v1 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

MatrixService 对应的 Retrofit 网络请求接口定义。

7. 逆地理(Geocoding)

  MapboxGeocoding client = MapboxGeocoding.builder()
      .accessToken(getString(R.string.access_token))
      .query(Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude()))
      .geocodingTypes(GeocodingCriteria.TYPE_PLACE)
      .mode(GeocodingCriteria.MODE_PLACES)
      .build();

  client.enqueueCall(new Callback<GeocodingResponse>() { });

MapboxGeocoding 包名 com.mapbox.api.geocoding.v5 ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

GeocodingService 对应的 Retrofit 网络请求接口定义。

8. 等时线(Isochrone)

  MapboxIsochrone mapboxIsochroneRequest = MapboxIsochrone.builder()
    .accessToken(getString(R.string.access_token))
    .profile(IsochroneCriteria.PROFILE_DRIVING)
    .addContoursMinutes(contourMinutes[0], contourMinutes[1], contourMinutes[2])
    .polygons(usePolygon)
    .addContoursColors(contourColors[0], contourColors[1], contourColors[2])
    .generalize(2f)
    .denoise(.4f)
    .coordinates(Point.fromLngLat(mapClickPoint.getLongitude(), mapClickPoint.getLatitude()))
    .build();

  mapboxIsochroneRequest.enqueueCall(new Callback<FeatureCollection>() { });

MapboxIsochrone 包名 com.mapbox.api.isochrone ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

IsochroneService 对应的 Retrofit 网络请求接口定义。

9. 瓦片查询(TileQuery) 高程查询

高程查询的 layers 是 “contour”

  MapboxTilequery tilequery = MapboxTilequery.builder()
    .accessToken(getString(R.string.access_token))
    .tilesetIds("mapbox.mapbox-streets-v7")
    .query(Point.fromLngLat(point.getLongitude(), point.getLatitude()))
    .radius(50)
    .limit(10)
    .geometry("polygon")
    .dedupe(true)
    .layers("building")
    .build();

  tilequery.enqueueCall(new Callback<FeatureCollection>() { });

MapboxTilequery 包名 com.mapbox.api.tilequery ,所属的gradle依赖 com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0

TilequeryService 对应的 Retrofit 网络请求接口定义。

10. 构造圆(Circle)

  TurfTransformation.circle(centerPoint, radius, CIRCLE_STEPS, UNIT_MILES);

TurfTransformation 包名 com.mapbox.turf ,大名鼎鼎的 turf 包,都是一些简单算法工具类。

TurfTransformation 中只有构造圆的 circle() 方法。

11. 测距(Distance)

  TurfMeasurement.distance(@NonNull Point point1, @NonNull Point point2);

TurfMeasurement 包名 com.mapbox.turf ,还有方位角、目标点、中点、bbox、面积、沿一条线返回距离起点指定距离的点等。

12. 示例没有了,写一些其它

  // 沿一条线返回距离起点指定距离的点,返回Point对象,只有经纬度值
  TurfMeasurement.nearestPointOnLine(@NonNull Point pt, @NonNull List<Point> coords);

  // 找到一条线上离某个点最近的点,返回Feature对象,图形是点,还包含两个点的距离信息"dist",还有"index"属性
  TurfMisc.nearestPointOnLine(@NonNull Point pt, @NonNull List<Point> coords);

  // 返回一条线两个点中间的部分,两个点可以不在线条上,找的是两个点离线条最近的两个点之间的线条
  TurfMisc.lineSlice(@NonNull Point startPt, @NonNull Point stopPt, @NonNull Feature line);

  // 返回一条线 距离起点startDist距离 到 距离起点stopDist距离 之间的线条
  TurfMisc.lineSliceAlong(@NonNull Feature line, @FloatRange(from = 0) double startDist, @FloatRange(from = 0) double stopDist, @NonNull @TurfConstants.TurfUnitCriteria String units);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值