Search code examples
androidgoogle-mapsandroid-activity

Android-How to set location in map


I have this map and I want to set the location to the lat , lon that I receive in the Intent extras.How can I do it?

public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
    private SupportMapFragment mMapFragment;
    private GoogleMap mGoogleMap;
    private String lat;
    private String lon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        lat=getIntent().getStringExtra("lat");
        lon=getIntent().getStringExtra("lon");
        mMapFragment=(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mMapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap=googleMap;


    }
}

Solution

  • put this code in onMapReady

    double lat = location.getLatitude();
    double lng= location.getLongitude();
    // set up marker and add
    googleMap.addMarker(new MarkerOptions().position(new LatLng(lat , lng))
                .title("Location").icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
    // move camera to it
    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 8));
    

    always do all map-related features like drawing polygons, adding markers, moving camera etc. after onMapReady call, so when googleMap won't be null. And remember that even if it gets called every time for you - in some circulumstances it may not get fired on some device and every googleMap.someMethod() call (e.g. under onClick) will throw you NullPointerException. be prepared for that