保持自定义Android谷歌地图标记从缩放

时间:2016-03-04 17:10:56

标签: android google-maps google-maps-android-api-2

我工作的应用程序具有总线预测功能。在此功能中,我们使用Google地图将选定的公交路线显示为Polyline并使用自定义平面Marker。问题是在Sony Xperia M (C1904)(运行Jelly Bean 4.3)上,Marker是巨大的。 (屏幕截图如下。由于公司原因,不得不把一些东西弄黑)我在Nexus 5(运行KitKat 4.4.4)和Nexus 6P(运行Marshmallow 6.0.1)上包含相同代码的屏幕截图。

Sony Xperia M(Jelly Bean)

Xperia M Screenshot

Nexus 5(KitKat)

Nexus 5 Screenshot

Nexus 6P(棉花糖)

Nexus 6P Screenshot

正如您所看到的,分辨率较高的屏幕标记较小,分辨率相对较低的Xperia M具有巨大的标记。有没有办法让它们在每台设备上看起来都一样大?

这是我建立的Bitmap

public Bitmap getStopBitmapForRoute(BusDataProvider.BusRoute route) {
        BitmapFactory.Options myOptions = new BitmapFactory.Options();
        myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;// important
        myOptions.inMutable = true;

        Bitmap bitmap = Bitmap.createBitmap(BusFragment.outCircleRadius * 4, BusFragment.outCircleRadius * 4, Bitmap.Config.ARGB_8888);

        Log.d("Is Stop Bitmap Mutable?", bitmap.isMutable() + "");

        Canvas canvas = new Canvas(bitmap);

        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(route.getRouteColor());
        canvas.drawCircle(BusFragment.outCircleRadius, BusFragment.outCircleRadius, BusFragment.outCircleRadius, paint);

        return bitmap;
    }

这里是实际设置Marker及其他选项的代码:

public Marker drawStop(CyRideDataProvider.StopLocation stop, GoogleMap map) {
        Marker marker;
        MarkerOptions markerOptions = new MarkerOptions()
           .icon(BitmapDescriptorFactory.fromBitmap(getStopBitmapForRoute(currentRoute)))
           .flat(true).anchor(0.25f, 0.25f).visible(true).position(stop.getLatLng());

        routeStopMarkers.put(marker = map.addMarker(markerOptions), stop);
        displayedStops.add(new Pair<>(marker, stop));
        return marker;
    }

提前致谢!

0 个答案:

没有答案