哆啦的时光机
不幸的是,Mapbox Lines 不支持此功能。但是,使用新的 Mapbox API v7 和 Annotations 插件,您可以执行以下操作来获得您需要的内容。1. 使用 LineManager 在 Mapview 上绘制一条线2. 以度为单位计算 Line 的方位角 3. 按计算的度数旋转可绘制箭头(可绘制可以是向上的箭头)4. 使用在 Mapview 上绘制符号符号管理器。该符号将放置在线的中间,并用作旋转的可绘制对象的图像只需将此代码放在 Mapview 活动中的任何位置public void createLineAndArrow(){ //Declare the coordinates of the two points of the line float latitude1 = 34.1f; float longitude1 = 33.2f; float latitude2 = 35f; float longitude2 = 34.5f; //Calculate bearing of line double lat1Rad = Math.toRadians(latitude1); double lat2Rad = Math.toRadians(latitude2); double deltaLonRad = Math.toRadians(longitude2 - longitude1); double y = Math.sin(deltaLonRad) * Math.cos(lat2Rad); double x = Math.cos(lat1Rad) * Math.sin(lat2Rad) - Math.sin(lat1Rad) * Math.cos(lat2Rad) * Math.cos(deltaLonRad); double bearing = (Math.toDegrees(Math.atan2(y,x))+360)%360; //Draw the Line List<LatLng> lineVertices = new ArrayList<>(); lineVertices.add(new LatLng(latitude1,longitude1)); lineVertices.add(new LatLng(latitude2,longitude2)); LineOptions lineOptions = new LineOptions().withLatLngs(lineVertices) .withLineColor(ColorUtils.colorToRgbaString(Color.MAGENTA)) .withLineWidth(3f); LineManager lineManager = new LineManager(mapView, mapboxMap,mapboxMap.getStyle()); lineManager.create(lineOptions); //Rotate the drawable Bitmap bmapOriginal = BitmapFactory.decodeResource(getResources(), R.drawable.arrowup); final Bitmap bmap = bmapOriginal.copy(Bitmap.Config.ARGB_8888, true); Matrix matrix = new Matrix(); matrix.postRotate((float)bearing); Bitmap rotatedBitmap = Bitmap.createBitmap(bmap , 0, 0, bmap.getWidth(), bmap.getHeight(), matrix, true); Drawable d = new BitmapDrawable(getResources(), rotatedBitmap); //Add the drawable to the selected mapbox style mapboxMap.getStyle().addImage("rotatedImage", BitmapUtils.getBitmapFromDrawable(d), true); //Draw the Symbol in the middle of the Line SymbolOptions symbolOptions = new SymbolOptions().withIconImage("rotatedImage") .withGeometry(Point.fromLngLat((longitude2+longitude1)/2, (latitude2+latitude1)/2)); SymbolManager symbolManager = new SymbolManager(mapView, mapboxMap, mapboxMap.getStyle()); symbolManager.create(symbolOptions);}