私のアプリケーションにgooglemapがありますが、マーカーの位置がどこにあり、マーカーがそこにあるのかが示されておらず、ユーザーがその場所を更新するたびにマーカーを更新する必要がありますまた、みんな助けてくれますか?感謝:)リンクの下に従ってください以上の場合Googleマップのマーカーがユーザーの場所に表示されない
public class GPSRenter extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
GoogleMap mGoogleMap;
GoogleApiClient mGoogleAPIClient;
MarkerOptions options;
final String TAG = this.getClass().getName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(googleServicesAvailable()){
setContentView(R.layout.activity_gpsrenter);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
initMap();
}else{
}
}
private void initMap() {
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment);
mapFragment.getMapAsync(this);
}
public boolean googleServicesAvailable(){
GoogleApiAvailability api = GoogleApiAvailability.getInstance();
int isAvailable = api.isGooglePlayServicesAvailable(this);
if(isAvailable == ConnectionResult.SUCCESS){
return true;
}else if(api.isUserResolvableError(isAvailable)){
Dialog dialog = api.getErrorDialog(this, isAvailable, 0);
dialog.show();
}else{
Toast.makeText(this, "Cant connect to Google Play Services", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
// goToLocationZoom(39.008224, -76.8984527, 15);
// mGoogleMap.setMyLocationEnabled(true);
mGoogleAPIClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleAPIClient.connect();
}
LocationRequest mLocationRequest;
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(5000);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleAPIClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
public void onLocationChanged(Location location) {
if(location == null){
Toast.makeText(this, "Can't get current location", Toast.LENGTH_SHORT).show();
}else{
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
Log.d(TAG, String.valueOf(location.getLatitude()));
Log.d(TAG, String.valueOf(location.getLongitude()));
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(ll, 18);
MarkerOptions options = new MarkerOptions()
.position(new LatLng(location.getLatitude(),location.getLatitude()))
.snippet("I am here");
mGoogleMap.addMarker(options);
mGoogleMap.animateCamera(update);
}
}
}
あなたが調べてもらってくださいonLocationChangedと呼ばれるかどうか? –
@HareshChhelana - それが呼び出されます。 'animateCamera'はうまくいきます。それはただの問題です。 –
マーカーのアイコンを設定します。 –