Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/android-for-longdo.api
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ public final class com.mapconductor.longdo.LongdoOverlayStacking {
public static final com.mapconductor.longdo.LongdoOverlayStacking INSTANCE;
public final java.lang.String addLayerJs(java.lang.String, com.mapconductor.core.controller.OverlayKind, int);
public final java.lang.String addPolygonTileLayerJs(java.lang.String);
public final java.lang.String addPolylineTileLayerJs(java.lang.String);
public final java.lang.String addMarkerTileLayerJs(java.lang.String);
}
public final class com.mapconductor.longdo.LongdoOverlayState {
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/com/mapconductor/longdo/LongdoMapViewController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ import com.mapconductor.core.polygon.PolygonCapableInterface
import com.mapconductor.core.polygon.PolygonTiler
import com.mapconductor.core.polygon.polygonTileRasterLayerState
import com.mapconductor.core.polyline.OnPolylineEventHandler
import com.mapconductor.core.polyline.POLYLINE_TILE_LAYER_ID
import com.mapconductor.core.polyline.PolylineCapableInterface
import com.mapconductor.core.polyline.PolylineState
import com.mapconductor.core.polyline.PolylineTiler
import com.mapconductor.core.polyline.polylineTileRasterLayerState
import com.mapconductor.core.raster.RasterLayerCapableInterface
import com.mapconductor.core.raster.RasterLayerState
import com.mapconductor.longdo.circle.LongdoCircleController
Expand Down Expand Up @@ -125,6 +128,20 @@ class LongdoMapViewController(
}
}
}

// Many polylines too: the same raster layer path, in the polyline band.
polylineController.tiler =
PolylineTiler().apply {
onTemplate = { template, tileSize ->
if (template != null) {
// Returns once the tile layer is on the page's map: the tiled
// polylines' onAdded is called on the return.
mountRasterLayerOnMap(polylineTileRasterLayerState(template, tileSize))
} else {
unmountRasterLayer(POLYLINE_TILE_LAYER_ID)
}
}
}
// ホルダーの投影にカメラを供給する。ホルダーはコントローラより先に作られるので
// ここで繋ぐ。これが無いと toScreenOffset が常に null を返し、InfoBubble と
// マーカー追従が理由も出ずに落ちる。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.mapconductor.longdo

import com.mapconductor.core.controller.OverlayKind
import com.mapconductor.core.polygon.POLYGON_TILE_LAYER_ID
import com.mapconductor.core.polyline.POLYLINE_TILE_LAYER_ID
import com.mapconductor.core.raster.RasterHeaderRuleSet
import com.mapconductor.core.raster.RasterLayerSource
import com.mapconductor.core.raster.RasterLayerState
Expand Down Expand Up @@ -44,6 +45,8 @@ private fun rasterAddLayerJs(
): String =
if (state.id == POLYGON_TILE_LAYER_ID) {
LongdoOverlayStacking.addPolygonTileLayerJs(layerSpec)
} else if (state.id == POLYLINE_TILE_LAYER_ID) {
LongdoOverlayStacking.addPolylineTileLayerJs(layerSpec)
} else {
LongdoOverlayStacking.addLayerJs(layerSpec, OverlayKind.RasterLayer, state.zIndex)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ internal object LongdoOverlayStacking {
/** ポリゴンのタイル: ポリゴンの帯の一番下(画像になったポリゴンであって、地図の画像ではない)。 */
fun addPolygonTileLayerJs(layerSpec: String): String = addLayerJs(layerSpec, OverlayKind.Polygon, Int.MIN_VALUE)

/** ポリラインのタイル: ポリラインの帯の一番下(サークルの上、ネイティブのポリラインの下)。 */
fun addPolylineTileLayerJs(layerSpec: String): String = addLayerJs(layerSpec, OverlayKind.Polyline, Int.MIN_VALUE)

/** マーカーのタイル: マーカーの帯の一番下。 */
fun addMarkerTileLayerJs(layerSpec: String): String = addLayerJs(layerSpec, OverlayKind.Marker, Int.MIN_VALUE)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class LongdoPolylineController(
override val renderer: LongdoPolylineOverlayRenderer,
polylineManager: PolylineManagerInterface<LongdoPolylineHandle> = PolylineManager(),
) : PolylineController<LongdoPolylineHandle>(polylineManager, renderer) {
/** 既知のポリラインを再適用する(地図 `ready` 後の復元用)。 */
/** 既知のポリラインを再適用する(地図 `ready` 後の復元用)。タイルで描く線(ハンドル無し)は飛ばす。 */
fun reapply() {
renderer.reapply(polylineManager.allEntities().map { it.polyline })
renderer.reapply(polylineManager.allEntities().mapNotNull { it.polyline as LongdoPolylineHandle? })
}
}
Loading