質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

0回答

503閲覧

Android Google Maps マーカーをシングルタップでドラッグ可能に

falcom_zx

総合スコア65

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

1グッド

0クリップ

投稿2020/03/13 01:56

アンドロイドでGoogleマップアプリを作成中です。
マップにマーカーを立てた後、マーカーをシングルタップで自由に動かせるようにしたいのですが、現状1〜2秒長押ししないと動かせません。
今のコードは以下の通りです。

kotlin

1override fun onMapReady(googleMap: GoogleMap) { 2 mMap = googleMap 3 4 mMap.setOnMapClickListener(object :GoogleMap.OnMapClickListener { 5 6 override fun onMapClick(latlng :LatLng) { 7 val location = LatLng(latlng.latitude,latlng.longitude) 8 9 mMap.addMarker(MarkerOptions().position(location).draggable(true)) 10 } 11 }) 12 13 mMap.setOnMarkerClickListener(object :GoogleMap.OnMarkerClickListener { 14 override fun onMarkerClick(marker: Marker):Boolean { 15 return true 16 } 17 }) 18 19 20 mMap.setOnMarkerDragListener(object :GoogleMap.OnMarkerDragListener { 21 override fun onMarkerDragStart(marker: Marker) {} 22 override fun onMarkerDrag(marker: Marker) {} 23 override fun onMarkerDragEnd(marker: Marker) {} 24 }) 25}

OnMarkerClickListenerでドラッグ出来るようにしたいので、以下のようにコーディングしましたがエラーがでます。

mMap.setOnMarkerClickListener(object :GoogleMap.OnMarkerClickListener { override fun onMarkerDragStart(marker: Marker) {} override fun onMarkerDrag(marker: Marker) {} override fun onMarkerDragEnd(marker: Marker) {} })

エラーメッセージ
Object is not abstract and does not implement abstract member public abstract fun onMarkerClick(p0: Marker!): Boolean defined in com.google.android.gms.maps.GoogleMap.OnMarkerClickListener
'onMarkerDragStart' overrides nothing
'onMarkerDrag' overrides nothing
'onMarkerDragEnd' overrides nothing

シングルタップでのマーカーの動かし方についてご教授お願いします。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quadii.shii

2020/03/13 02:13

イメージとしてはシングルタップしたマーカーがアクティブ化(フロート状態化)して、その後自由にドラッグできるようになる感じでしょうか。 ドキュメントを見る限りではstartDragのような能動的にドラッグ状態を開始するための関数は公開されていないようです。 それでもやりたい場合は、推奨されていませんがマップ上に同じ大きさで透明のUI要素を自作して、そこにドラッグに追従するマーカーアイコンを模した自作UIを配置し、マップ上の座標と自作オーバーレイ上の座標を相互連携させながら操作を行うという形になると思います。 書いていて思うのは、自作UIは安定性・安全性において公式APIに大きく劣るのでそこまでやるコストには見合わないと思います。
falcom_zx

2020/03/13 02:26

quadii.shii様お返事ありがとうございます。イメージはその通りです。 マーカーをシングルタップでアクティブ化し自由にドラッグできる機能を実装している海外アプリ(日本語非対応)が既にあるため、同様の機能を自分のアプリにも実装したいと思い試行錯誤してます。公式ドキュメントや英語サイトも調べてみたのですが、手がかりが無く行き詰まってました。 この機能実装は、初心者にはハードルが高そうですね。
quadii.shii

2020/03/13 02:39

そういうアプリが存在するのですね。 やはり貴方と同じような不満を感じた人が自作したのだと思います。 Githubなどで成果を公開していれば使わせてもらうのもアリかとは思いますが、それはそれでハードルがありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問