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

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

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

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

Google マップ

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

Q&A

受付中

Google Maps Android API で地図画面を固定したい

退会済みユーザー

退会済みユーザー

総合スコア0

Android

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

Google マップ

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

0回答

0グッド

0クリップ

2055閲覧

投稿2016/02/24 02:23

編集2016/02/24 02:38

Google Maps Android API で地図画面を現在地に固定したいです。
スクロールの禁止をするまでは問題ないのですが、ピンチ操作でズームをする際や画面を回転する際に中心がずれてしまいます。

#やりたいこと
回転操作を以下の画像のようにすると、△が中心になって画面が回転するので、
画面上のどこで回転操作をしても☆(現在地)を中心に画面が回転するようにしたいです。

画像1

ズーム操作の場合も画面上のどこをピンチしても、☆を中心に画面が回転するようにしたい。
現状はピンチ操作をした箇所を中心にズームされてしまいます。
イメージ説明

他のアプリに例えるとIngressのように地図画面を固定したいですが、Google Maps Android APIで可能なのでしょうか。

以下は現在のコードです。

java

1package hoge.hoge.hoge.map; 2 3import android.Manifest; 4import android.content.Context; 5import android.content.pm.PackageManager; 6import android.location.Location; 7import android.location.LocationManager; 8import android.support.v4.app.ActivityCompat; 9import android.support.v4.app.FragmentActivity; 10import android.os.Bundle; 11 12import com.google.android.gms.maps.CameraUpdateFactory; 13import com.google.android.gms.maps.GoogleMap; 14 15import com.google.android.gms.maps.OnMapReadyCallback; 16import com.google.android.gms.maps.SupportMapFragment; 17import com.google.android.gms.maps.UiSettings; 18import com.google.android.gms.maps.model.LatLng; 19 20public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, android.location.LocationListener { 21 22 private GoogleMap map; 23 24 private LocationManager locationManager; 25 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_maps); 31 32 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 33 .findFragmentById(R.id.map); 34 mapFragment.getMapAsync(this); 35 36 } 37 38 39 @Override 40 public void onMapReady(GoogleMap googleMap) { 41 map = googleMap; 42 43 UiSettings uiSettings = map.getUiSettings(); 44 // scroll操作を禁止 45 uiSettings.setScrollGesturesEnabled(false); 46 // 回転操作を許可 47 uiSettings.setRotateGesturesEnabled(true); 48 // zoom操作を許可 49 uiSettings.setZoomGesturesEnabled(true); 50 51 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 52 // TODO パーミッションが許可されていなかった場合の処理を書こうね 53 return; 54 } 55 map.setMyLocationEnabled(true); 56 57 this.setUpLocationManager(); 58 59 } 60 61 @Override 62 public void onLocationChanged(Location location) { 63 LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude()); 64 65 map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 66 } 67 68 @Override 69 public void onStatusChanged(String provider, int status, Bundle extras) { 70 71 } 72 73 @Override 74 public void onProviderEnabled(String provider) { 75 76 } 77 78 @Override 79 public void onProviderDisabled(String provider) { 80 81 } 82 83 private void setUpLocationManager() { 84 if (locationManager == null) { 85 this.locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 86 87 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 88 // TODO そのうちパーミッションが許可されていなかった場合の処理を書くよ 89 return; 90 } 91 this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, this); 92 this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, this); 93 } 94 } 95} 96

xml

1<fragment android:id="@+id/map" 2 android:name="com.google.android.gms.maps.SupportMapFragment" 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:map="http://schemas.android.com/apk/res-auto" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 tools:context="hoge.hoge.hoge.map.MapsActivity"/>

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Android

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

Google マップ

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