这个问题非常简单,但我会为您提供更多背景信息: 我的团队正在尝试制作一个 Android 应用程序,用户可以突出显示街道的某个部分,为其着色,然后将该信息发送到服务器。我已经开始使用 Google Maps API V2,但到目前为止我唯一拥有的是带有缩放按钮的工作 map 。 我也读过这个帖子possible to highlight a section of a street? ,但没有说明用户如何从应用程序执行此操作。 我想知道,首先,这是否可能,其次,如何才能做到。 谢谢。
最佳答案
我正在做类似的事情,但它是在一年多前的 Google map V1 上。就我而言,我只是从位置点绘制线条。
这是我旧代码的一部分:
class MapOverlay extends Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
if(startPoint != null && stopPoint != null)
{
Point screenPts = new Point();
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStrokeWidth(4);
if(startCounter >= 0)
{
int len = mapPoints.size();
if(route > 0)
{
route = route - (int)(5*(((((gtpPoints.get(len - route).speed)*3600)/1000))/maxSpeed)+1);
}
if(route <= 0)
{
route = 0;
}
if(len > 1)
{
for(int i = 1; i< len - route; i++)
{
Point startPoint = new Point();
Point stopPoint = new Point();
mapView.getProjection().toPixels(mapPoints.get(i-1).point, startPoint);
mapView.getProjection().toPixels(mapPoints.get(i).point, stopPoint);
LinearGradient gradient = new LinearGradient(startPoint.x, startPoint.y, stopPoint.x, stopPoint.y, mapPoints.get(i-1).color, mapPoints.get(i).color, android.graphics.Shader.TileMode.REPEAT);
paint.setShader(gradient);
paint.setColor(mapPoints.get(i).color);
canvas.drawPoint(stopPoint.x, stopPoint.y, paint);
canvas.drawLine(startPoint.x, startPoint.y, stopPoint.x, stopPoint.y, paint);
}
}
}
if(startCounter > 0)
{
startCounter = startCounter - 1;
}
if(onePoint == false)
{
mapView.getProjection().toPixels(startPoint, screenPts);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.start_point);
canvas.drawBitmap(bmp, screenPts.x-bmp.getWidth()/2, screenPts.y-bmp.getHeight()/2, null);
mapView.getProjection().toPixels(stopPoint, screenPts);
Bitmap bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.stop_point);
canvas.drawBitmap(bmp2, screenPts.x-bmp2.getWidth()/2, screenPts.y-bmp2.getHeight()/2, null);
}
else
{
mapView.getProjection().toPixels(startPoint, screenPts);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pointer);
canvas.drawBitmap(bmp, screenPts.x-bmp.getWidth()/2, screenPts.y-bmp.getHeight()/2, null);
}
}
return true;
}
}
关于android - 用户如何突出显示街道的一部分并将其上传到自定义 map 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032327/