/*
* Copyright (c) 2017 Daimler AG / Moovel GmbH
*
* All rights reserved
*/
package com.car2go.maps;
import android.view.View;
import com.car2go.maps.model.CameraPosition;
import com.car2go.maps.model.Circle;
import com.car2go.maps.model.CircleOptions;
import com.car2go.maps.model.LatLng;
import com.car2go.maps.model.Marker;
import com.car2go.maps.model.MarkerOptions;
import com.car2go.maps.model.Polygon;
import com.car2go.maps.model.PolygonOptions;
import com.car2go.maps.model.Polyline;
import com.car2go.maps.model.PolylineOptions;
/**
* Provider-independent map controller. Originally was designed to mimic Google Map API and being
* adapted to other providers. For detailed documentation on each method please refer Google Maps
* documentation.
*/
public interface AnyMap {
void moveCamera(CameraUpdate cameraUpdate);
void animateCamera(CameraUpdate cameraUpdate);
void animateCamera(CameraUpdate cameraUpdate, CancelableCallback callback);
void animateCamera(CameraUpdate cameraUpdate, int duration, CancelableCallback callback);
CameraPosition getCameraPosition();
Projection getProjection();
Marker addMarker(MarkerOptions options);
Circle addCircle(CircleOptions options);
Polygon addPolygon(PolygonOptions options);
Polyline addPolyline(PolylineOptions options);
UiSettings getUiSettings();
void setOnMapClickListener(OnMapClickListener listener);
void setOnMapLongClickListener(OnMapLongClickListener listener);
void setOnCameraChangeListener(OnCameraChangeListener listener);
void setOnMarkerClickListener(OnMarkerClickListener listener);
void setInfoWindowAdapter(InfoWindowAdapter adapter);
void setTrafficEnabled(boolean enabled);
void setMyLocationEnabled(boolean enabled);
void setMapType(Type type);
void setPadding(int left, int top, int right, int bottom);
void onUserLocationChanged(LatLng location, float accuracy);
enum Type {
NORMAL,
SATELLITE
}
/**
* Features of {@link AnyMap} which might be supported or not supported
* by each particular implementation.
*/
enum Feature {
/**
* Displaying layer with traffic jams on the map
*/
TRAFFIC_LAYER,
/**
* Supporting several {@link com.car2go.maps.AnyMap.Type}. If this capability is not present,
* only one of types is implemented (which one - is not specified).
*/
MAP_TYPES,
/**
* Supports being invisible at first and being revealed (or simply made visible) later on.
*/
REVEALABLE
}
interface OnMapClickListener {
OnMapClickListener NULL = new OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
// Do nothing
}
};
void onMapClick(LatLng latLng);
}
interface OnMapLongClickListener {
OnMapLongClickListener NULL = new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
// Do nothing
}
};
void onMapLongClick(LatLng latLng);
}
interface OnCameraChangeListener {
void onCameraChange(CameraPosition cameraPosition);
}
interface OnMarkerClickListener {
OnMarkerClickListener NULL = new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// Do nothing
return false;
}
};
boolean onMarkerClick(Marker marker);
}
interface CancelableCallback {
void onFinish();
void onCancel();
}
interface InfoWindowAdapter {
View getInfoWindow(Marker marker);
View getInfoContents(Marker marker);
}
}