我正在开发一个自定义磁贴提供商,以在Google地图上显示流量数据.在高缩放级别,它对我来说很好.
但折线在低级别缩放时重叠.
我的自定义磁贴提供程序类是
public class polylineTileProvider implements TileProvider { private static final String TAG = "TileOverlay"; private final int mTileSize = 256; private final SphericalMercatorProjection mProjection = new SphericalMercatorProjection(mTileSize); private final int mScale = 2; private final int mDimension = mScale * mTileSize; private final List<polylineoptions> polylines; public polylineTileProvider(List<polylineoptions> polylines) { this.polylines = polylines; } @Override public Tile getTile(int x,int y,int zoom) { Matrix matrix = new Matrix(); float scale = ((float) Math.pow(2,zoom) * mScale); matrix.postScale(scale,scale); matrix.postTranslate(-x * mDimension,-y * mDimension); Bitmap bitmap = Bitmap.createBitmap(mDimension,mDimension,Bitmap.Config.ARGB_8888); //save memory on old phones Canvas c = new Canvas(bitmap); c.setMatrix(matrix); drawCanvasFromArray(c,scale); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100,baos); return new Tile(mDimension,baos.toByteArray()); } private void drawCanvasFromArray(Canvas c,float scale) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setStyle(Paint.Style.stroke); paint.setstrokeCap(Paint.Cap.ROUND); paint.setstrokeJoin(Paint.Join.ROUND); paint.setShadowLayer(0,0); paint.setAntiAlias(true); if (polylines != null) { for (int i = 0; i < polylines.size(); i++) { List<LatLng> route = polylines.get(i).getPoints(); paint.setColor(polylines.get(i).getColor()); paint.setstrokeWidth(getlinewidth(polylines.get(i).getWidth(),scale)); Path path = new Path(); if (route != null && route.size() > 1) { Point screenPt1 = mProjection.toPoint(route.get(0)); //first point MarkerOptions m = new MarkerOptions(); m.position(route.get(0)); path.moveto((float) screenPt1.x,(float) screenPt1.y); for (int j = 1; j < route.size(); j++) { Point screenPt2 = mProjection.toPoint(route.get(j)); path.lineto((float) screenPt2.x,(float) screenPt2.y); } } c.drawPath(path,paint); } } } private float getlinewidth(float width,float scale) { return width / (scale); } }
Trafic图层在Google Maps android应用程序中显示得非常好.
我怎样才能制作一个类似的图层.提前致谢.