【AndroidでSkobblerを使う】地図上に線を表示する
地図上に線を描くときはクラス[SKPolyline]を使用します。
SKMapSurfaceView#addPolylineを使うことで画面上に表示できるようになります。
@Override
public void onSingleTap(SKScreenPoint skScreenPoint) {
SKPolyline skPolyline = getSKPolyline(skScreenPoint);
skMapSurfaceView.addPolyline(skPolyline);
}
private SKPolyline getSKPolyline(SKScreenPoint skScreenPoint) {
SKPolyline skPolyline = new SKPolyline();
//IDを設定する
skPolyline.setIdentifier(1);
//線の色を設定する
skPolyline.setOutlineColor(new float[]{1f, 0f, 0f, 1f});
//線の色を設定する
skPolyline.setColor(new float[]{1f, 1f, 1f, 1f});
//線を破線表示にし、間隔の長さを指定する。
skPolyline.setOutlineDottedPixelsSkip(100);
//線を破線表示にし、線の長さを指定する。
skPolyline.setOutlineDottedPixelsSolid(100);
//線の幅を設定する
skPolyline.setLineSize(2);
//枠線の幅を設定する
skPolyline.setOutlineSize(5);
//線の経路を設定する。複数設定することで折れ線等を表現できる。
List<skcoordinate> linList = new ArrayList<>();
SKCoordinate startPoint = skMapSurfaceView.pointToCoordinate(skScreenPoint);
SKCoordinate middlePoint = new SKCoordinate(startPoint.getLongitude(), startPoint.getLatitude() + 0.001f);
SKCoordinate endPoint = new SKCoordinate(startPoint.getLongitude() + 0.001f, startPoint.getLatitude() + 0.001f);
linList.add(startPoint);
linList.add(middlePoint);
linList.add(endPoint);
skPolyline.setNodes(linList);
return skPolyline;
}