我工作的应用程序具有总线预测功能。在此功能中,我们使用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)
Nexus 5(KitKat)
Nexus 6P(棉花糖)
正如您所看到的,分辨率较高的屏幕标记较小,分辨率相对较低的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;
}
提前致谢!