【问题标题】:Google Maps image distorted (Xamarin)谷歌地图图像失真(Xamarin)
【发布时间】:2017-05-15 21:16:18
【问题描述】:

我一直在关注this tutorial,了解如何为 Google 地图制作自定义标记,我已经完成了这部分工作。但是,我必须更改一些代码才能调整我在标记上使用的图像的大小。

这是我用来调整大小的方法:

    private void UpdateMarkers(float zoom)
    {
        // Max zoom out => zoom = 3
        // Max zoom in  => zoom = 21
        int dimension = (int)zoom * 10;
        if (dimension == currentDimension)
            return;
        currentDimension = dimension;
        map.Clear();
        foreach (var pin in customPins)
        {
            var immutableBitmap = BitmapFactory.DecodeResource(Context.Resources, Resource.Drawable.icon);
            var mutableBitmap = immutableBitmap.Copy(Bitmap.Config.Argb8888, true);
            mutableBitmap.Height = dimension;
            mutableBitmap.Width = dimension;
            BitmapDescriptorFactory.FromBitmap(mutableBitmap);
            var img = BitmapDescriptorFactory.FromBitmap(mutableBitmap);

            var marker = new MarkerOptions();
            marker.SetPosition(new LatLng(pin.Pin.Position.Latitude, pin.Pin.Position.Longitude));
            marker.SetTitle(pin.Pin.Label);
            marker.SetSnippet(pin.Pin.Address);
            marker.SetIcon(img);

            map.AddMarker(marker);
        }

    }

这是一张关于它的外观的图片:

在原始代码中,我会做这样的事情

var img = BitmapDescriptorFactory.FromResource(Resource.Drawable.icon);

这很有效。但是我想调整图像的大小,所以我找到了一种方法来做到这一点。

知道发生了什么吗?

【问题讨论】:

    标签: c# android google-maps xamarin xamarin.android


    【解决方案1】:

    拥有Bitmap 后,您可以通过Bitmap.CreateScaledBitmap 对其进行缩放:

    var bitmap = BitmapFactory.DecodeResource(Context.Resources, Resource.Drawable.icon);
    var scaledBitmap = Bitmap.CreateScaledBitmap(bitmap, dimension, dimension, false);
    var img = BitmapDescriptorFactory.FromBitmap(scaledBitmap);
    

    注意:确保您的位图 RecycleDispose 避免内存泄漏。

    注意 BitmapFactory 的 DecodeResourceCreateScaledBitmap 是繁重的 API 调用,您可能希望缓存结果而不是在 foreach (var pin in customPins) 循环中一遍又一遍地调用它们。

    【讨论】:

    • 谢谢!这就像一个魅力:) 感谢优化提示,一定会这样做!
    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多