美文网首页
画线渐变色

画线渐变色

作者: 任天一 | 来源:发表于2019-03-21 16:43 被阅读0次
private Integer getColorWithColor(float speed) {
        speed = 80 - speed;
        if (speed < 5) {
            speed = 0;
        }
        if (speed > 80) {
            speed = 80;
        }

        float one = (255 + 255) / 80F;
        int r = 0;
        int g = 0;
        int b = 0;

        if (speed < 40) {
            r = (int) (one * speed);
            g = 255;
        }
        if (speed >= 40) {
            // 比例大于50的时候绿色是越来越少的,直到0 变为纯红
            g = (int) (255 - ((speed - 40) * one));
            r = 255;
        }
        return Color.argb(255, r, g, b);
    }
    private Integer getShareColorWithColor(float speed) {
        int r;
        int g;
        int b;

        if (speed > 80) {
            speed = 80;
        }

        r = (int) (31 * speed / 80) + 38;
        g = 211 - (int) (93 * speed / 80);
        b = (int) (11 * speed / 80) + 238;

        return Color.argb(255, r, g, b);
    }
   /**
     * 绘制地图数据
     */
    private void drawMapData() {
        if (rideLineDataModelList == null || rideLineDataModelList.size() <= 0) {
            return;
        }

        // 划线
        LatLngBounds.Builder builder = LatLngBounds.builder();
        int lineWidth = MyApplication.getApp().dp2px(3);
        int shareLineWidth = ConvertUtils.dp2px(6);

        PolylineOptions options = new PolylineOptions().width(lineWidth);
        PolylineOptions shareOptions = new PolylineOptions().width(shareLineWidth);

        List<Integer> integersColor = new ArrayList<>();
        List<Integer> shareIntegersColor = new ArrayList<>();

        for (int i = 0; i < rideLineDataModelList.size(); i++) {
            if (i % 5000 == 0) {
                options.useGradient(true);
                options.colorValues(integersColor);
                aMap.addPolyline(options);
                shareOptions.useGradient(true);
                shareOptions.colorValues(shareIntegersColor);
                aMapSharethird.addPolyline(shareOptions);
                aMapSharemb.addPolyline(options);
                options = new PolylineOptions().width(lineWidth);
                shareOptions = new PolylineOptions().width(shareLineWidth);
                integersColor = new ArrayList<>();
                shareIntegersColor = new ArrayList<>();
            }
            options.add(new LatLng(rideLineDataModelList.get(i).getLatitude(), rideLineDataModelList.get(i).getLongitude()));
            shareOptions.add(new LatLng(rideLineDataModelList.get(i).getLatitude(), rideLineDataModelList.get(i).getLongitude()));

            float currentSpeed = rideLineDataModelList.get(i).getSpeed() * 3.6f;

            // 设置速度相对应得点的颜色
            integersColor.add(getColorWithColor(currentSpeed));
            shareIntegersColor.add(getShareColorWithColor(currentSpeed));

            builder.include(new LatLng(rideLineDataModelList.get(i).getLatitude(), rideLineDataModelList.get(i).getLongitude()));

        }
        options.useGradient(true);
        options.colorValues(integersColor);
        Polyline aMapPolyline = aMap.addPolyline(options);
        aMapPolyline.setZIndex(3);
        shareOptions.useGradient(true);
        shareOptions.colorValues(shareIntegersColor);
        Polyline aMapSharethirdPolyline = aMapSharethird.addPolyline(shareOptions);
        aMapSharethirdPolyline.setZIndex(3);
        Polyline aMapSharembPolyline = aMapSharemb.addPolyline(options);
        aMapSharembPolyline.setZIndex(3);

        // 设置显示区域
        LatLngBounds latLngBounds = builder.build();

        int topbottom = MyApplication.getApp().dp2px(90);
        int leftright = MyApplication.getApp().dp2px(70);
        aMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(latLngBounds, leftright, leftright, topbottom, topbottom));

        int topbottom2 = MyApplication.getApp().dp2px(100);
        int leftright2 = MyApplication.getApp().dp2px(30);
        aMapSharethird.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(latLngBounds, leftright2, leftright2, topbottom2, topbottom2));

        int top3 = MyApplication.getApp().dp2px(65);
        int bottom3 = MyApplication.getApp().dp2px(130);
        int leftright3 = MyApplication.getApp().dp2px(50);
        aMapSharemb.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(latLngBounds, leftright3, leftright3, top3, bottom3));

        // 当前点Marker
        currentPointMarker = aMap.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(0).getLatitude(), rideLineDataModelList.get(0).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.move_icon)));
        currentPointMarker.setClickable(false);

        // 起点Marker
        Marker startMarker = aMap.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(0).getLatitude(), rideLineDataModelList.get(0).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_green)));
        startMarker.setClickable(false);

        Marker startMarker2 = aMapSharethird.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(0).getLatitude(), rideLineDataModelList.get(0).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_green)));
        startMarker2.setClickable(false);

        Marker startMarker3 = aMapSharemb.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(0).getLatitude(), rideLineDataModelList.get(0).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_green)));
        startMarker3.setClickable(false);

        // 终点Marker
        Marker endMarker = aMap.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLatitude(), rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_red)));
        endMarker.setClickable(false);

        Marker endMarker2 = aMapSharethird.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLatitude(), rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_red)));
        endMarker2.setClickable(false);

        Marker endMarker3 = aMapSharemb.addMarker(new MarkerOptions()
                .position(new LatLng(rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLatitude(), rideLineDataModelList.get(rideLineDataModelList.size() - 1).getLongitude()))
                .anchor(0.5f, 0.5f)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_point_red)));
        endMarker3.setClickable(false);

        if (rideLineModel != null) {
            // 显示最大速度Marker
            if (rideLineModel.getMaxspeedlatitude() != 0 || rideLineModel.getMaxspeedlongitude() != 0) {
                Typeface typeface = Typeface.createFromAsset(getAssets(), "FV_Almelo.ttf");
                int padding = MyApplication.getApp().dp2px(7);

                TextView maxspeedMarkerView = new TextView(getApplicationContext());
                maxspeedMarkerView.setTypeface(typeface);
                maxspeedMarkerView.setBackgroundResource(R.mipmap.marker_maxspeed);
                maxspeedMarkerView.setPadding(padding, 0, padding, padding);
                maxspeedMarkerView.setTextColor(getResources().getColor(R.color.M000000));
                maxspeedMarkerView.setText(new StringBuilder().append(rideLineModel.getMaxspeed()).append("KM/H"));

                TextView maxspeedMarkerView3 = new TextView(getApplicationContext());
                maxspeedMarkerView3.setTypeface(typeface);
                maxspeedMarkerView3.setBackgroundResource(R.mipmap.marker_maxspeed);
                maxspeedMarkerView3.setPadding(padding, 0, padding, padding);
                maxspeedMarkerView3.setTextColor(getResources().getColor(R.color.M000000));
                maxspeedMarkerView3.setText(new StringBuilder().append(rideLineModel.getMaxspeed()).append("KM/H"));

                Marker maxspeedMarker = aMap.addMarker(new MarkerOptions()
                        .icon(BitmapDescriptorFactory.fromView(maxspeedMarkerView))
                        .anchor(0.5f, 1)
                        .position(new LatLng(rideLineModel.getMaxspeedlatitude(), rideLineModel.getMaxspeedlongitude())));
                maxspeedMarker.setClickable(false);

                Marker maxspeedMarker3 = aMapSharemb.addMarker(new MarkerOptions()
                        .icon(BitmapDescriptorFactory.fromView(maxspeedMarkerView3))
                        .anchor(0.5f, 1)
                        .position(new LatLng(rideLineModel.getMaxspeedlatitude(), rideLineModel.getMaxspeedlongitude())));
                maxspeedMarker3.setClickable(false);
            }

            // 错过的人
            if (!TextUtils.isEmpty(rideLineModel.getNearuserstr())) {
                try {
                    missUserModelList = JSON.parseArray(rideLineModel.getNearuserstr(), MissUserModel.class);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

相关文章

  • 画线渐变色

  • 彩铅画作业102号-4「姑娘在等待」

    赶在8月11日最后一秒完成这幅画,今天学习了渐变色,总体给这幅画打6分吧,总分10分。反思如下: 1.画线稿时没有...

  • 控件背景样式汇总

    圆角背景 渐变色背景 TextView文字渐变色 圆形背景

  • css3背景和border渐变色写法,和使用border-ima

    渐变色问题 css3背景渐变色写法: css3 border渐变色写法: 同样可以把to right 换成90de...

  • UIColor/UIApplication/UIBezierPa

    [TOC] UIColor分类 生成渐变色 指定两种颜色和渐变色的高度范围即可。 渐变色.gif 16进制颜色 1...

  • 画线

    看着马路上为规范车辆行驶而画出的线,我有一瞬间感觉自己被某种潜在的恶意所束缚。 看着前排车辆突然亮起的红色尾灯,我...

  • 画线

    使用CAShapeLayer和UIBezierPath在UIView上画线。

  • 画线

    http://www.cnblogs.com/ygm900/archive/2013/07/02/3167334....

  • 画线

    如何为你的UIView添加边缘分割线 相遇相识相恋相濡以末5楼 · 2016.04.15 15:31 为什么要用r...

  • java rgb自动生成数组渐变色

    前台渐变色 后台渐变色方法 step为分多少个颜色

网友评论

      本文标题:画线渐变色

      本文链接:https://www.haomeiwen.com/subject/gmjcvqtx.html