/* * Copyright (C) 2013 Cyril Mottier (http://cyrilmottier.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cyrilmottier.polaris2.maps; import android.os.Bundle; public class SupportMapFragment extends com.google.android.gms.maps.SupportMapFragment { // HACK Cyril: I'm using a hack here because the following String is // supposed to be private and may be changed in the future. The only // solution to overcome the problem would be to create a SupportMapFragment // wrap scratch instead of extending the original one. It would also let use // getMap() directly instead of getPolarisMap(). private static final String ARGS_OPTIONS = "MapOptions"; public static SupportMapFragment newInstance() { return new SupportMapFragment(); } public static SupportMapFragment newInstance(GoogleMapOptions options) { final SupportMapFragment f = new SupportMapFragment(); final Bundle args = new Bundle(); args.putParcelable(ARGS_OPTIONS, options); f.setArguments(args); return f; } /** * Gets the underlying GoogleMap that is tied to the view wrapped by this fragment. * * @return the underlying GoogleMap. Null if the view of the fragment is not yet ready. This can happen if the fragment lifecyle have * not gone through {@link #onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)} yet. This can * also happen if Google Play services is not available. If Google Play services becomes available afterwards and the fragment * have gone through {@link #onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)} , calling * this method again will initialize and return the GoogleMap. */ @Polaris public GoogleMap getPolarisMap() { final com.google.android.gms.maps.GoogleMap googleMap = getMap(); return googleMap == null ? null : new GoogleMap(googleMap); } }