Ziem My personal blog

Google Maps - misc

Are you tired fighting (Support)MapFragment? There is a simpler solution: use MapView.

MapView class can be used instead of [Support]MapFragment. It’s a view which extends FrameLayout and displays a map.

If you want to use it you just need to forward these lifecycle methods

  • onCreate(Bundle),
  • onResume(),
  • onPause(),
  • onDestroy(),
  • onSaveInstanceState(),
  • onLowMemory(),

and voilà.

It has the same callbacks as map fragment:

  • getMap() that is deprecated and should be used in favour of asynchronous one,
  • getMapAsync() that is triggered when the map is ready to be used.

There is also a lite mode map:

The Google Maps Android API can serve a static image as a ‘lite mode’ map.

A lite mode map is a bitmap image of a map at a specified location and zoom level. Lite mode supports all of the map types (normal, hybrid, satellite, terrain) and a subset of the functionality supplied by the full API. Lite mode is useful when you want to provide a number of maps in a stream, or a map that is too small to support meaningful interaction.

You can enable it programmatically:

GoogleMapOptions options = new GoogleMapOptions().liteMode(true);

or in your layout/*.xml file:

<fragment xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:map="https://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraZoom="13"
    map:mapType="normal"
    map:liteMode="true" />

In the documentation, you can find all the things it supports.

Snapshot

Yet another feature Google Maps offer are snapshots:

You can use the Google Maps built-in snapshot method, to capture a preview and display it in an ImageView.

To learn more, I recommend reading: Android Google Map to show as a picture.

Utils

There is also a project called Google Maps Android API utility library which provides extensions to Google Maps components.

It extends Google Maps library functionalities by adding:

  • clustering,
  • heat maps,
  • and more:

You can add it to your project by adding this dependency:

dependencies {
    compile 'com.google.maps.android:android-maps-utils:0.4.3'
}