Marker(マーカー)
Marker は、特定の地理位置に配置できるポイント型の注釈です。カスタムアイコン、インタラクション、アニメーションに対応しています。
Composable 関数
Section titled “Composable 関数”マーカーの数が少ない場合、オプションを直接指定すると簡単に扱えます。
id を指定すると、不要な Recomposition を抑えることができます。
@Composablefun MapViewScope.Marker( position: GeoPointInterface, clickable: Boolean = true, draggable: Boolean = false, icon: MarkerIconInterface? = null, extra: Serializable? = null, id: String? = null, onClick: OnMarkerEventHandler? = null, onDragStart: OnMarkerEventHandler? = null, onDrag: OnMarkerEventHandler? = null, onDragEnd: OnMarkerEventHandler? = null, onAnimateStart: OnMarkerEventHandler? = null, onAnimateEnd: OnMarkerEventHandler? = null,)position: マーカーの位置を表す地理座標(GeoPointInterface)clickable: マーカーがクリックに反応するかどうか(デフォルト:true)draggable: マーカーをドラッグ可能にするかどうか(デフォルト:false)animation: マーカーを表示するときにアニメーション(デフォルト:null)icon: マーカー用のカスタムアイコン(MarkerIconInterface?)extra: マーカーに紐づける任意の追加データ(Serializable?)id: マーカーの一意な識別子(String?、未指定の場合は自動生成)onClick: マーカーがクリックされたときに呼び出されますonDragStart: マーカーがドラッグを開始したときに呼び出されますonDrag: マーカーがドラッグ中に呼び出されますonDragEnd: マーカーのドラッグが終了したときに呼び出されますonAnimateStart:animate()を開始するときに呼び出されますonAnimateEnd:animate()を終了したときに呼び出されます
マーカーの数が多い場合、マーカーを移動させるような場合、こちらを使用することを推奨します。
id を指定すると、不要な Recomposition を抑えることができます。
@Composablefun MapViewScope.Marker(state: MarkerState)state: マーカーの状態を管理するMarkerState
アイコンの種類
Section titled “アイコンの種類”DefaultMarkerIcon
Section titled “DefaultMarkerIcon”外観をカスタマイズできる標準的なマーカーアイコン:
DefaultIcon( scale: Float = 1.0f, label: String? = null, fillColor: Color = Color.Red, strokeColor: Color = Color.Black, strokeWidth: Dp = 1.dp, labelTextColor: Color = Color.White, labelStrokeColor: Color? = null, debug: Boolean = false)DrawableDefaultIcon
Section titled “DrawableDefaultIcon”Drawable リソースを背景として利用するマーカー:
DrawableDefaultIcon( backgroundDrawable: Drawable, scale: Float = 1.0f, strokeColor: Color? = null, strokeWidth: Dp = 1.dp)ImageIcon
Section titled “ImageIcon”任意の Drawable 画像を使ったマーカー:
ImageIcon( drawable: Drawable, anchor: Offset = Offset(0.5f, 0.5f), debug: Boolean = false)基本的なマーカー
Section titled “基本的なマーカー”// MapView には GoogleMapView や MapboxMapView など、利用する地図SDKのコンポーネントを指定しますMapView(state = mapViewState) { Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), extra = "San Francisco", id = "san-francisco-marker" )}カスタムアイコン付きマーカー
Section titled “カスタムアイコン付きマーカー”MapView には GoogleMapView や MapboxMapView など、利用する地図SDKのコンポーネントを指定しますMapView(state = mapViewState) { Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), icon = DefaultIcon( scale = 1.5f, label = "SF", fillColor = Color.Blue, strokeColor = Color.White, strokeWidth = 2.dp ), extra = "San Francisco with custom icon", id = "custom-sf-marker" )}ドラッグ可能なマーカー
Section titled “ドラッグ可能なマーカー”@Composablefun DraggableMarkerExample() { val markerState = MarkerState( position = GeoPoint.fromLatLong(37.7749, -122.4194), draggable = true, icon = DefaultIcon( label = "Drag me", fillColor = Color.Green ), onDrag = { markerState -> println("position: ${GeoPoint.from(markerState.position).toUrlValue(6)}") } )
// MapView には GoogleMapView や MapboxMapView など、利用する地図SDKのコンポーネントを指定します MapView( state = mapViewState ) { Marker(markerState) }}異なるアイコンを持つ複数マーカー
Section titled “異なるアイコンを持つ複数マーカー”// MapView には GoogleMapView や MapboxMapView など、利用する地図SDKのコンポーネントを指定しますMapView(state = mapViewState) { // Default icon with different scales Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), icon = DefaultIcon(scale = 0.7f, label = "Small") )
Marker( position = GeoPoint.fromLatLong(37.7849, -122.4094), icon = DefaultIcon(scale = 1.0f, label = "Normal") )
Marker( position = GeoPoint.fromLatLong(37.7949, -122.3994), icon = DefaultIcon(scale = 1.4f, label = "Large") )
// Custom colored marker Marker( position = GeoPoint.fromLatLong(37.7649, -122.4294), icon = DefaultIcon( fillColor = Color.Yellow, strokeColor = Color.Black, strokeWidth = 2.dp, label = "Custom" ) )
// Drawable icon marker val context = LocalContext.current AppCompatResources.getDrawable(context, R.drawable.custom_icon)?.let { drawable -> Marker( position = GeoPoint.fromLatLong(37.7549, -122.4394), icon = DrawableDefaultIcon( backgroundDrawable = drawable, scale = 1.2f ) ) }}アニメーション
Section titled “アニメーション”Drop- 画面上部から、positionの位置にマーカーが移動するアニメーションBounce- 画面上部から、positionの位置にマーカーが移動したあと、バウンスします