【AndroidでSkobblerを使う】地図上に線を表示する
地図上に線を描くときはクラス[SKPolyline]を使用します。
SKMapSurfaceView#addPolylineを使うことで画面上に表示できるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @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; } |