3

Im developing an app using Google Maps v2 for Android and I managed to put a custom icon to the user's position but I can't remove the default one, so it overlays my custom icon like in the image:

enter image description here

(It is that big just for now :p )

My code is like:

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

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

    map.setMyLocationEnabled(true);

    map.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {

        @Override
        public void onMyLocationChange(Location location) {
            if (location == null)
                return;

            mPositionMarker = map.addMarker(new MarkerOptions()
            .flat(true)
            .icon(BitmapDescriptorFactory
                    .fromResource(R.drawable.logop1))
            .anchor(0.5f, 1f)
            .position(new LatLng(location.getLatitude(), location.getLongitude())));

        }
    });
}

So: 1) Is there a way to remove the default blue dot of user's current location?

2) Will the user location be updated when I move in the "real world" (I cant test it for conectivity reasons) or do I have to write/override a method to update users position?

Thanks in advance

João Menighin
  • 3,083
  • 6
  • 38
  • 80
  • 1
    See http://stackoverflow.com/questions/16855878/how-to-replace-blue-dot-with-my-icon-on-google-maps-v2-in-android and http://stackoverflow.com/questions/16869192/how-to-remove-default-small-sized-google-map-marker-while-building-navigation-ap to get your answer. – joao2fast4u Sep 30 '14 at 00:39

2 Answers2

6

map.setMyLocationEnabled(true); remove line

DI Developers
  • 343
  • 1
  • 3
  • 8
3

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);
    }
}
}
Maveňツ
  • 1
  • 12
  • 50
  • 89
João Menighin
  • 3,083
  • 6
  • 38
  • 80