I am using Google Map API v2
in my application to show Maps.
I have followed all the steps, that is to be followed to enable Google Map in my application.
public class PinLocationOnMapView extends FragmentActivity { private double mLatitude = 0.0, mLongitude = 0.0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SupportMapFragment fragment = SupportMapFragment.newInstance(); getSupportFragmentManager().beginTransaction() .add(android.R.id.content, fragment).commit(); } }
If I use this code, it shows me map, but if I provide my latitude/longitude values, map tiles does not load, and I see only white tiles.
Following is the code written in onCreate() of above class:
if (getIntent().getExtras() != null) { final Bundle bundle = getIntent().getBundleExtra("LOCATION"); mLatitude = bundle.getDouble("LATITUDE"); mLongitude = bundle.getDouble("LONGITUDE"); } else { finish(); } GoogleMapOptions options = new GoogleMapOptions(); LatLng latLng = new LatLng(mLatitude, mLongitude); CameraPosition cameraPosition;// = new CameraPosition(latLng, 0, 0, 0); cameraPosition = CameraPosition.fromLatLngZoom(latLng, (float) 14.0); options.mapType(GoogleMap.MAP_TYPE_SATELLITE).camera(cameraPosition) .zoomControlsEnabled(true).zoomGesturesEnabled(true); SupportMapFragment fragment = SupportMapFragment.newInstance(options); getSupportFragmentManager().beginTransaction() .add(android.R.id.content, fragment).commit();
Also, I have a list of lat/long values. I want to show them on MapFragment
, how to show multiple markers on MapFragment
?
I tried with MapView
and ItemizedOverlay
, but it didn't work for me. I believe I have correctly created the SHA1
key to get the API
key, because if that was wrong, I could not see map using MapFragment
as well, but I can see that if I don't pass the lat/log value.
You just need this code: var marker = new google. maps. Marker({ position: new google.
2048 characters in URL is just under 100 GeoCode values. So, again no more than 100 markers.
I do it like this to show car positions on the map with markers of different colors:
private void addMarkersToMap() { mMap.clear(); for (int i = 0; i < Cars.size(); i++) { LatLng ll = new LatLng(Cars.get(i).getPos().getLat(), Cars.get(i).getPos().getLon()); BitmapDescriptor bitmapMarker; switch (Cars.get(i).getState()) { case 0: bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED); Log.i(TAG, "RED"); break; case 1: bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN); Log.i(TAG, "GREEN"); break; case 2: bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE); Log.i(TAG, "ORANGE"); break; default: bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED); Log.i(TAG, "DEFAULT"); break; } mMarkers.add(mMap.addMarker(new MarkerOptions().position(ll).title(Cars.get(i).getName()) .snippet(getStateString(Cars.get(i).getState())).icon(bitmapMarker))); Log.i(TAG,"Car number "+i+" was added " +mMarkers.get(mMarkers.size()-1).getId()); } } }
Cars is an ArrayList
of custom objects and mMarkers is an ArrayList
of markers.
Note : You can show map in fragment like this:
private GoogleMap mMap; .... private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the // map. if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { setUpMap(); } } } private void setUpMap() { // Hide the zoom controls as the button panel will cover it. mMap.getUiSettings().setZoomControlsEnabled(false); // Add lots of markers to the map. addMarkersToMap(); // Setting an info window adapter allows us to change the both the // contents and look of the // info window. mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter()); // Set listeners for marker events. See the bottom of this class for // their behavior. mMap.setOnMarkerClickListener(this); mMap.setOnInfoWindowClickListener(this); mMap.setOnMarkerDragListener(this); // Pan to see all markers in view. // Cannot zoom to bounds until the map has a size. final View mapView = getSupportFragmentManager().findFragmentById(R.id.map).getView(); if (mapView.getViewTreeObserver().isAlive()) { mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @SuppressLint("NewApi") // We check which build version we are using. @Override public void onGlobalLayout() { LatLngBounds.Builder bld = new LatLngBounds.Builder(); for (int i = 0; i < mAvailableCars.size(); i++) { LatLng ll = new LatLng(Cars.get(i).getPos().getLat(), Cars.get(i).getPos().getLon()); bld.include(ll); } LatLngBounds bounds = bld.build(); mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 70)); mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } }); } }
And just call setUpMapIfNeeded()
in onCreate()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With