Reputation: 1622
I want to get a marker on my current location using Google map Api. I tested it on an Android phone and I am getting only a map. i don't get a marker on my current location. Even the toast what I have put in the code doesn't show. Can anyone help me with this. I am posting my code below:
public class MainActivity extends Activity implements LocationListener {
GoogleMap map;
@Override
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
}
@Override
public void onLocationChanged(Location location) {
map.clear();
MarkerOptions mp = new MarkerOptions();
mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
mp.title("my position");
map.addMarker(mp);
Toast.makeText(getApplicationContext(),
location.getLatitude() +", "+location.getLongitude(),
Toast.LENGTH_LONG).show();
map.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 16));
} }
Upvotes: 0
Views: 2092
Reputation: 1345
Just remove map.clear();
from your code and add marker.remove();
This is working for me.. try this,
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//actionBar.getActionBar();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
System.out.println("current "+locationManager);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
addGoogleMap();
addMarkers();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi")
private void addGoogleMap() {
if(googleMap == null){
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setOnMarkerClickListener(this);
googleMap.setOnMarkerDragListener(this);
}
}
private void addMarkers() {
if(googleMap != null)
{
lt = new LatLng(location.getLatitude(), location.getLongitude());
marker = googleMap.addMarker(new MarkerOptions().position(lt)
.title("Current location ").snippet("Race Start: 9:00 AM CST")
.draggable(false));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
lt, 20));
}
}
@Override
public void onLocationChanged(Location location) {
//txtLat = (TextView) findViewById(R.id.textview1);
//txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
System.out.println("loc changed");
//googleMap.clear();
marker.remove();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
System.out.println("current "+locationManager);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
lt = new LatLng(location.getLatitude(), location.getLongitude());
marker = googleMap.addMarker(new MarkerOptions().position(lt)
.title("Current location ").snippet("Race Start: 9:00 AM CST")
.draggable(false));
}
Upvotes: 1
Reputation: 3976
Turn on your mobile GPS, when it will stop blinking then it means it has got the location and then marker will show.
Upvotes: 0
Reputation: 288
You are already getting location with this:
location.getLatitude(), location.getLongitude()
Upvotes: 0
Reputation: 7439
There is a in built method given by Google Map, if you want to get location using google map.
map.getLatitude();
map.getLongitude();
Try it, it will work.
Upvotes: 0