android - 用户如何突出显示街道的一部分并将其上传到自定义 map 服务器?

标签 android google-maps highlight google-maps-api-2 street-address

这个问题非常简单,但我会为您提供更多背景信息: 我的团队正在尝试制作一个 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/

相关文章:

javascript - 如何使用 secret 中的 api key 嵌入 Google map - ASP .NET MVC Core

java - 如何使用PDFBox删除PDF文件中的注释

java - 安卓 : Updating thread causes GC to run a ton

android - 如何在 Flutter 中创建可水平滚动的垂直 ListView ?

android - keystore 更改密码详细信息?

java - 谷歌地图,get center 不在中心。安卓

google-maps - 为什么谷歌地图 "q"参数停止工作?

jquery - 为突出显示的链接设置动画 (animer un lien surligné)

javascript - 如何突出显示音频文件的成绩单?

Android:网络 radio 在 ACTION_SHUTDOWN 事件之前关闭。事件顺序在 ICS 中更改