【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; }