/* * Copyright (C) 2012 The Android Open Source Project * * 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.example.mapdemo; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.TileOverlay; import com.google.android.gms.maps.model.TileOverlayOptions; import com.google.android.gms.maps.model.TileProvider; import com.google.android.gms.maps.model.UrlTileProvider; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.CheckBox; import java.net.MalformedURLException; import java.net.URL; import java.util.Locale; /** * This demonstrates how to add a tile overlay to a map. */ public class TileOverlayDemoActivity extends AppCompatActivity implements OnMapReadyCallback { /** This returns moon tiles. */ private static final String MOON_MAP_URL_FORMAT = "http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/%d/%d/%d.jpg"; private TileOverlay mMoonTiles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tile_overlay_demo); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { map.setMapType(GoogleMap.MAP_TYPE_NONE); TileProvider tileProvider = new UrlTileProvider(256, 256) { @Override public synchronized URL getTileUrl(int x, int y, int zoom) { // The moon tile coordinate system is reversed. This is not normal. int reversedY = (1 << zoom) - y - 1; String s = String.format(Locale.US, MOON_MAP_URL_FORMAT, zoom, x, reversedY); URL url = null; try { url = new URL(s); } catch (MalformedURLException e) { throw new AssertionError(e); } return url; } }; mMoonTiles = map.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider)); } public void setFadeIn(View v) { if (mMoonTiles == null) { return; } mMoonTiles.setFadeIn(((CheckBox) v).isChecked()); } }