package org.osmdroid.samplefragments.layouts; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import org.osmdroid.R; import org.osmdroid.events.MapListener; import org.osmdroid.events.ScrollEvent; import org.osmdroid.events.ZoomEvent; import org.osmdroid.samplefragments.BaseSampleFragment; import org.osmdroid.tileprovider.tilesource.MapBoxTileSource; import org.osmdroid.tileprovider.tilesource.MapQuestTileSource; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; /** * Uses OSM as the upper map and MapBox (API key required) as the lower map * Created by alex on 6/4/16. */ public class SampleSplitScreen extends BaseSampleFragment implements MapListener { @Override public String getSampleTitle() { return "Two maps, split screen with Mapbox"; } protected MapView mMapView2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.map_splitscreen, container, false); mMapView = (MapView) root.findViewById(R.id.mapview1); mMapView2 = (MapView) root.findViewById(R.id.mapview2); return root; } @Override protected void addOverlays() { mMapView.setTileSource(TileSourceFactory.MAPNIK); mMapView.getController().setZoom(1); mMapView.getController().setCenter(new GeoPoint(39.8282, 98.5795)); mMapView2.getController().setZoom(1); mMapView2.getController().setCenter(new GeoPoint(39.8282, 98.5795)); mMapView.setMapListener(this); //hey, check out the other constructors for mapbox, there's a few options to load up your //access token and tile set preferences mMapView2.setTileSource(new MapBoxTileSource(getContext())); mMapView2.setMapListener(this); mMapView2.setBuiltInZoomControls(true); mMapView2.setMultiTouchControls(true); mMapView2.setTilesScaledToDpi(true); } long lastEvent=0; @Override public boolean onScroll(ScrollEvent event) { if(lastEvent+40 < System.currentTimeMillis()) { lastEvent=System.currentTimeMillis(); if (event.getSource() == mMapView) { mMapView2.getController().setCenter(mMapView.getMapCenter()); } else { mMapView.getController().setCenter(mMapView2.getMapCenter()); } } return true; } @Override public boolean onZoom(ZoomEvent event) { if(lastEvent+40 < System.currentTimeMillis()) { lastEvent=System.currentTimeMillis(); if (event.getSource() == mMapView) { mMapView2.getController().setZoom(event.getZoomLevel()); } else mMapView.getController().setZoom(event.getZoomLevel()); } return true; } }