谷歌地图折线连接点/圆圈

问题描述 投票:0回答:1

enter image description here

正如您在屏幕截图中看到的那样,有2个圆圈与折线连接。我怎样才能做到这一点?怎么称呼?

我已经尝试过使用带有图标的标记但是当我放大我的图标时也会放大并变小。这是我试过的代码:

private void addMarker(LatLng position){

        int height = 50;
        int width = 50;
        BitmapDrawable bitmapdraw = (BitmapDrawable)getResources().getDrawable(R.mipmap.ic_blue_for_marker);
        Bitmap b=bitmapdraw.getBitmap();
        Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);

        MarkerOptions options = new MarkerOptions()
                .position(position);
        options.icon(BitmapDescriptorFactory.fromBitmap(smallMarker));
        options.anchor(0.5f, 0.5f);
        mMap.addMarker(options);
    }

编辑:缩放前:enter image description here

在zoomingenter image description here之后

android google-maps google-maps-markers
1个回答
1
投票

似乎问题不在于标记本身 - 它在缩放时尺寸没有变化。例如,标记可绘制的ic_blue_circle.xml像:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="496.158dp"
        android:height="496.158dp"
        android:viewportWidth="496.158"
        android:viewportHeight="496.158">

    <path
        android:fillColor="#0000FF"
        android:pathData="M496.158,248.085c0-137.021-111.07-248.082-248.076-248.082C111.07,0.003,0,111.063,0,248.085 c0,137.002,111.07,248.07,248.082,248.07C385.088,496.155,496.158,385.087,496.158,248.085z" />
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M351.08,248.083c0-56.891-46.115-103.002-103-103.002c-56.886,0-103.002,46.111-103.002,103.002 c0,56.881,46.116,102.996,103.002,102.996C304.965,351.079,351.08,304.964,351.08,248.083z" />
</vector>

和代码如:

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;

    List<LatLng> sourcePoints = new ArrayList<>();

    addCircleMarker(new LatLng(49.182856, -122.844883));
    sourcePoints.add(new LatLng(49.182856, -122.844883));
    sourcePoints.add(new LatLng(49.183452, -122.846288));
    sourcePoints.add(new LatLng(49.183761, -122.846739));
    sourcePoints.add(new LatLng(49.184343, -122.847050));
    sourcePoints.add(new LatLng(49.186917, -122.847061));
    sourcePoints.add(new LatLng(49.188655, -122.847885));
    sourcePoints.add(new LatLng(49.189560, -122.847885));
    addCircleMarker(new LatLng(49.189560, -122.847885));

    PolylineOptions polyLineOptions = new PolylineOptions();
    polyLineOptions.addAll(sourcePoints);
    polyLineOptions.width(10);
    polyLineOptions.color(Color.BLUE);
    mGoogleMap.addPolyline(polyLineOptions);

    mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(sourcePoints.get(0), 15));
}

哪里:

public void addCircleMarker(LatLng latLng) {
    Drawable circleDrawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_blue_circle);
    BitmapDescriptor markerIcon = getMarkerIconFromDrawable(circleDrawable, 30, 30);

    mGoogleMap.addMarker(new MarkerOptions()
            .position(latLng)
            .anchor(0.5f, 0.5f)
            .icon(markerIcon)
    );
}

private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable, int width, int height) {
    Canvas canvas = new Canvas();
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    canvas.setBitmap(bitmap);
    drawable.setBounds(0, 0, width, height);
    drawable.draw(canvas);
    return BitmapDescriptorFactory.fromBitmap(bitmap);
}

你有这样的东西:

Circle markers

缩放时圆圈大小没有变化:

Circle markers zoom

© www.soinside.com 2019 - 2024. All rights reserved.