【问题标题】:Google maps custom marker android谷歌地图自定义标记android
【发布时间】:2017-05-03 09:15:57
【问题描述】:

我正在制作基于 Android 版 Google 地图服务的公共交通地图。地图应该包含很多标记(超过 300 个),并且它们应该在地图放大和缩小(比例)时调整大小。现在标记只是相互重叠,有没有办法创建这样的自定义标记?

我自己尝试过,但没有成功。使用 android-map-utils 库 (https://github.com/googlemaps/android-maps-utils) 标记现在看起来更好,但它们无法调整大小并且看起来不同。

标准: - 标记包含一个指向所需位置的点和点右侧或左侧的文本 - 标记应根据地图调整大小。

【问题讨论】:

  • 建议:您仍然可以使用android-map-utils 并创建自己的IconGenerator 类。您只需要将布局文件更改为您的布局文件。

标签: java android google-maps


【解决方案1】:

使用位图比例

Bitmap markerBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_marker,options);
markerBitmap = SubUtils.scaleBitmap(markerBitmap, 70, 70);

然后将其设置为您的标记选项

MarkerOptions marker = new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(markerBitmap));
Marker mark = googleMap.addMarker(marker);

编辑

这里是 scaleBitmap 方法

public static Bitmap scaleBitmap(Bitmap bitmap, int newWidth, int newHeight) {
        Bitmap scaledBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888);

        float scaleX = newWidth / (float) bitmap.getWidth();
        float scaleY = newHeight / (float) bitmap.getHeight();
        float pivotX = 0;
        float pivotY = 0;

        Matrix scaleMatrix = new Matrix();
        scaleMatrix.setScale(scaleX, scaleY, pivotX, pivotY);

        Canvas canvas = new Canvas(scaledBitmap);
        canvas.setMatrix(scaleMatrix);
        canvas.drawBitmap(bitmap, 0, 0, new Paint(Paint.FILTER_BITMAP_FLAG));

        return scaledBitmap;
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 2020-10-02
  • 2016-01-16
  • 2013-08-21
  • 1970-01-01
  • 2015-10-19
相关资源
最近更新 更多