Remove default user's location icon

强颜欢笑 提交于 2019-12-01 09:03:11

You will have to stop using GoogleMap.setMyLocationEnabled and write a bit more code, including having your own LocationClient and adding Circle for accuracy.

You have to do that on your own. - set to false gmaps.getUiSettings().setMyLocationButtonEnabled(false);

  • create your own location button
  • if you get your current location, set a marker with your icon on that
  • if you click on your location button, move the camera and center it to the map

That will remove the blue dot

map.setMyLocationEnabled(true); remove line

João Menighin

Thanks joao2fast4u (lol) and ṁᾶƔƏň ツ. I followed your recomendations and I managed to make it work. Since I didn't see any answer concrete to this problem I'm posting my solution here:

package com.onsoftwares.ufvquest;
import android.location.Location;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.location.LocationClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
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.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapActivity extends ActionBarActivity implements LocationListener, GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener  {

private GoogleMap map;
private Marker mPositionMarker;
private LocationClient mLocationClient;
private LocationRequest mLocationRequest;
private LatLng mLatLng;

private boolean mUpdatesRequested = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    mLocationClient = new LocationClient(this, this, this);

    mLocationRequest = LocationRequest.create();

    mLocationRequest.setInterval(5000);

    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    // Set the interval ceiling to one minute
    mLocationRequest.setFastestInterval(1000);

    // Note that location updates are off until the user turns them on
    mUpdatesRequested = false;
}

@Override
protected void onStart() {
    super.onStart();
    mLocationClient.connect();
};

@Override
protected void onStop() {
    if (mLocationClient.isConnected()) {
        mLocationClient.removeLocationUpdates(this);
        mLocationClient.disconnect();
    }
    super.onStop();
};

@Override
public void onConnectionFailed(ConnectionResult arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onConnected(Bundle arg0) {
    mLocationClient.requestLocationUpdates(mLocationRequest, this);
}

@Override
public void onDisconnected() {
    // TODO Auto-generated method stub

}

@Override
public void onLocationChanged(Location location) {
    // Get the current location
    Location currentLocation = mLocationClient.getLastLocation();

    // Display the current location in the UI
    if (currentLocation != null) {
        LatLng currentLatLng = new LatLng (currentLocation.getLatitude(), currentLocation.getLongitude());
        if (mPositionMarker == null) {
            mPositionMarker = map.addMarker(new MarkerOptions()
                            .position(currentLatLng)
                            .title("Eu")
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.male_user_marker)));
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15));
        } else
            mPositionMarker.setPosition(currentLatLng);
    }
}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!