// Created by plusminus on 00:23:14 - 03.10.2008
package org.osmdroid.samplefragments.data;
import java.util.ArrayList;
import org.osmdroid.samplefragments.BaseSampleFragment;
import org.osmdroid.views.overlay.gestures.RotationGestureOverlay;
import org.osmdroid.api.IGeoPoint;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.ItemizedOverlayWithFocus;
import org.osmdroid.views.overlay.OverlayItem;
import android.content.Context;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
/**
* Generates a ton of icons on the map, for scale testing
* @author Nicolas Gramlich
*
*/
public class SampleWithMinimapItemizedOverlayWithScale extends BaseSampleFragment {
// ===========================================================
// Constants
// ===========================================================
public static final String TITLE = "Itemized overlay at Scale";
private static final int MENU_ZOOMIN_ID = Menu.FIRST;
private static final int MENU_ZOOMOUT_ID = MENU_ZOOMIN_ID + 1;
private static final int MENU_LAST_ID = MENU_ZOOMOUT_ID + 1; // Always set to last unused id
// ===========================================================
// Fields
// ===========================================================
private ItemizedOverlayWithFocus<OverlayItem> iconOverlay;
private RotationGestureOverlay mRotationGestureOverlay;
@Override
public String getSampleTitle() {
return TITLE;
}
// ===========================================================
// Constructors
// ===========================================================
@Override
protected void addOverlays() {
super.addOverlays();
final Context context = getActivity();
/* Itemized Overlay */
{
/* Create a static ItemizedOverlay showing some Markers on various cities. */
final ArrayList<OverlayItem> items = new ArrayList<>();
for (int i=0; i < 500; i++){
double random_lon=(Math.random() * 360) -180;
double random_lat = (Math.random() * 180) - 90;
items.add(new OverlayItem("A random point", "SampleDescription", new GeoPoint(random_lat,
random_lon)));
}
items.add(new OverlayItem("Berlin", "This is a relatively short SampleDescription.",
new GeoPoint(52518333, 13408333))); // Berlin
items.add(new OverlayItem(
"Washington",
"This SampleDescription is a pretty long one. Almost as long as a the great wall in china.",
new GeoPoint(38895000, -77036667))); // Washington
items.add(new OverlayItem("San Francisco", "SampleDescription", new GeoPoint(37779300,
-122419200))); // San Francisco
/* OnTapListener for the Markers, shows a simple Toast. */
iconOverlay = new ItemizedOverlayWithFocus<>(items,
new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
Toast.makeText(
context,
"Item '" + item.getTitle() + "' (index=" + index
+ ") got single tapped up", Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onItemLongPress(final int index, final OverlayItem item) {
Toast.makeText(
context,
"Item '" + item.getTitle() + "' (index=" + index
+ ") got long pressed", Toast.LENGTH_LONG).show();
return false;
}
}, context);
iconOverlay.setFocusItemsOnTap(true);
iconOverlay.setFocusedItem(0);
mMapView.getOverlays().add(iconOverlay);
mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
mRotationGestureOverlay.setEnabled(false);
mMapView.getOverlays().add(mRotationGestureOverlay);
}
/* MiniMap */
{
//MinimapOverlay miniMapOverlay = new MinimapOverlay(context,
// mMapView.getTileRequestCompleteHandler());
//mMapView.getOverlays().add(miniMapOverlay);
}
// Zoom and center on the focused item.
mMapView.getController().setZoom(5);
IGeoPoint geoPoint = iconOverlay.getFocusedItem().getPoint();
mMapView.getController().animateTo(geoPoint);
setHasOptionsMenu(false);
}
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Put overlay items first
mMapView.getOverlayManager().onCreateOptionsMenu(menu, MENU_LAST_ID, mMapView);
menu.add(0, MENU_ZOOMIN_ID, Menu.NONE, "ZoomIn");
menu.add(0, MENU_ZOOMOUT_ID, Menu.NONE, "ZoomOut");
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
mMapView.getOverlayManager().onPrepareOptionsMenu(menu, MENU_LAST_ID, mMapView);
super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mMapView.getOverlayManager().onOptionsItemSelected(item, MENU_LAST_ID, mMapView))
return true;
switch (item.getItemId()) {
case MENU_ZOOMIN_ID:
mMapView.getController().zoomIn();
return true;
case MENU_ZOOMOUT_ID:
mMapView.getController().zoomOut();
return true;
}
return false;
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}