Google Map で現在地を表示する ( GoogleAPIClient )
先日 GoogleAPIClient
を使用して Google Map に現在地を表示したいという、同じような質問がされていたようなのですが、私の場合初めの
public class MainActivity extends FragmentActivity
implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
の MainActivity
の部分にエラーがでてつまづいています。いくつか説明されているところでも、このように記述されているのになぜエラーになってしまうのかわかりません。
どのような対処をすればよいでしょうか?教えていただければと思います。
seesaawiki.jp/w/moonlight_aska の現在地を表示するを参考に
import com.google.android.gms.location.LocationClient;
の部分を
import com.google.android.gms.common.api.GoogleApiClient;
に変えています。
追記:
今書いているMainActivity.javaですが文中にエラーが表示されていないのに、デバッグでマップが表示されません。改善方法を教えていただきたいです。
package com.sample.testmap;
import android.content.Intent;
import android.view.View;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.GoogleApiClient;
//import com.google.android.gms.location.LocationClient;
import com.google.android.gms.location.FusedLocationProviderApi;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity
implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
private FusedLocationProviderApi fusedLocationProviderApi = LocationServices.FusedLocationApi;
private LatLng mKansai = new LatLng(34.435912, 135.243496);
private LatLng mItami = new LatLng(34.785500, 135.438004);
private GoogleMap mMap = null;
private GoogleApiClient mLocationClient = null;
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5000)
.setFastestInterval(16)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if(mMap != null) {
mMap.setMyLocationEnabled(true);
}
mLocationClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
if(mLocationClient != null){
mLocationClient.connect();
}
}
@Override
public void onLocationChanged(Location location){
CameraPosition cameraPos = new CameraPosition.Builder()
.target(new LatLng(location.getLatitude(),location.getLongitude())).zoom(17.0f)
.bearing(0).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
//マーカー設定
MarkerOptions options = new MarkerOptions();
Intent intent = getIntent();
String selectedA = intent.getStringExtra("SELECTED_ITEM");
if(selectedA.equals("関西国際空港")){
options.position(mKansai);
mMap.addMarker(options);
}
else{
options.position(mItami);
mMap.addMarker(options);
}
}
@Override
public void onConnectionFailed(ConnectionResult result){
}
@Override
public void onConnected(Bundle connectionHint){
fusedLocationProviderApi.requestLocationUpdates(mLocationClient, REQUEST, this);
}
@Override
public void onConnectionSuspended(int cause){
}
}
まず、
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
に警告としてそれぞれ
The import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks is never used
The import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener is never used
が表示されていました。
これをデバッグするとLogCatに
が表示されました。
また、
が強制的に表示されました。
3009331さん毎回のアドバイスありがとうございます。
無事にマップを表示することはできました。
3009331さんが確認された動作でもマーカーを立てる部分と現在地の表示の部分はエラーが出ていないだけで、動作はしないものだったのでしょうか?