【AndroidでSkobblerを使う】地図上に多角形を表示する
地図上に多角形を描くときはクラス[SKPolygon]を使用します。
SKMapSurfaceView#addPolygonを使うことで画面上に表示できるようになります。
@Override
public void onSingleTap(SKScreenPoint skScreenPoint) {
SKPolygon skPolygon = getSKPolygon(skScreenPoint);
skMapSurfaceView.addPolygon(skPolygon);
}
private SKPolygon getSKPolygon(SKScreenPoint skScreenPoint) {
SKPolygon skPolygon = new SKPolygon();
//IDを設定する
skPolygon.setIdentifier(1);
//多角形の外周線の色を設定する
skPolygon.setOutlineColor(new float[]{1f, 0f, 0f, 1f});
//多角形の色を設定する
skPolygon.setColor(new float[]{1f, 1f, 1f, 1f});
//多角形の周囲を破線表示にし、間隔の長さを指定する。
skPolygon.setOutlineDottedPixelsSkip(100);
//多角形の周囲を破線表示にし、線の長さを指定する。
skPolygon.setOutlineDottedPixelsSolid(100);
//枠線の幅を設定する
skPolygon.setOutlineSize(5);
//閉路の中心を空白にする。割合で指定する。
skPolygon.setMaskedObjectScale(0.1f);
//多角形の経路を設定する。
List<skcoordinate> linList = new ArrayList<>();
SKCoordinate startPoint = skMapSurfaceView.pointToCoordinate(skScreenPoint);
SKCoordinate middlePoint1 = new SKCoordinate(startPoint.getLongitude() + 0.001f, startPoint.getLatitude());
SKCoordinate middlePoint2 = new SKCoordinate(startPoint.getLongitude() + 0.001f, startPoint.getLatitude() + 0.001f);
SKCoordinate middlePoint3 = new SKCoordinate(startPoint.getLongitude() + 0.0001f, startPoint.getLatitude() + 0.0005f);
SKCoordinate endPoint = new SKCoordinate(startPoint.getLongitude(), startPoint.getLatitude() + 0.001f);
linList.add(startPoint);
linList.add(middlePoint1);
linList.add(middlePoint2);
linList.add(middlePoint3);
linList.add(endPoint);
skPolygon.setNodes(linList);
return skPolygon;
}