Android полилинии карты API - PullRequest
       17

Android полилинии карты API

1 голос
/ 14 апреля 2011

ну, я новичок в Android, и мне нужно использовать карты на устройстве более конкретно (полилинии) мне нужно сделать что-то вроде этого.Javascript Api maps app

Это веб-приложение, которое я сделал для отслеживания автобусных маршрутов и автобусных остановок в моем городе, и меня попросили сделать то же самое в Android!Я проверял API для Android и не нашел ничего похожего на ломаную линию в JS API, есть ли способ добиться этого?

У меня нет проблем с добавлением простых оверлеев, я проверял основные учебникиСайт разработчика Android, но я не знаю, как рисовать ломаную линию.

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

Там нет такого API в Android Google Maps API.Вы можете сначала только перечислить фактические GeoPoints маршрута, который вы хотите нарисовать, а затем нарисовать точки и линии на объекте Overlay.Там просто нет простого способа сделать это.

0 голосов
/ 20 мая 2014

Ответ FvZ работает, но не является родным способом, на карте есть полилинии, простой пример https://stackoverflow.com/a/21877742/618419

Также взгляните на документацию по Android, у них много простых и хорошо составленныхпримеры: http://developer.android.com/reference/com/google/android/gms/maps/model/Polyline.html

0 голосов
/ 14 апреля 2011

Более простой способ сделать это - получить свои очки и расширить ImageView, который будет отображать ваше изображение для рисования точек, чем просто нужно передать точки, которые вы хотите нарисовать.

В моемпроект, который я сделал так:

public class ImageDraw extends ImageView{
private Paint   mPaint = new Paint();
List<Point> pts = new ArrayList<Point>() ;

public ImageDraw(Context context) {
    super(context);

}
//used to send the location of the points to draw on the screen
//must be called before every redraw to update the points on the screen
public void SetPointsToDraw(List<Point> pts)
{
    this.pts = pts;
}


public ImageDraw(Context context, AttributeSet attrs)
{
    super(context,attrs);
}
public ImageDraw(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
}

@Override
public void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    Paint paintColor = mPaint;
    paintColor.setColor(Color.YELLOW);
    paintColor.setStrokeWidth(3);


    if(pts.size() > 0)
    {
        canvas.drawCircle(pts.get(0).x, pts.get(0).y, 7, paintColor);   
    }
    if (pts.size() > 1)
    {
        for (int i = 1 ; i < pts.size(); i++) {
            paintColor.setColor(Color.YELLOW);
            canvas.drawCircle(pts.get(i).x, pts.get(i).y, 7, paintColor);
            paintColor.setColor(Color.RED);
            canvas.drawLine(pts.get(i-1).x, pts.get(i-1).y, pts.get(i).x, pts.get(i).y, paintColor);
        }
    }


}

}

Когда вы расширяете ImageView и создаете макет с помощью xml, не забудьте поместить весь пакет вашего нового виджета, например: com.Myapp.MyImageView

...