use of org.osmdroid.bonuspack.kml.Style in project osmbonuspack by MKergall.
the class MapActivity method createTrack.
KmlTrack createTrack(String id, String name) {
KmlTrack t = new KmlTrack();
KmlPlacemark p = new KmlPlacemark();
p.mId = id;
p.mName = name;
p.mGeometry = t;
mKmlDocument.mKmlRoot.add(p);
// set a color to this track by creating a style:
Style s = new Style();
int color;
try {
color = Integer.parseInt(id);
color = color % TrackColor.length;
color = TrackColor[color];
} catch (NumberFormatException e) {
color = Color.GREEN - 0x20000000;
}
s.mLineStyle = new LineStyle(color, 8.0f);
p.mStyle = mKmlDocument.addStyle(s);
return t;
}
use of org.osmdroid.bonuspack.kml.Style in project osmbonuspack by MKergall.
the class MapActivity method buildDefaultStyle.
Style buildDefaultStyle() {
Drawable defaultKmlMarker = ResourcesCompat.getDrawable(getResources(), R.drawable.marker_kml_point, null);
Bitmap bitmap = ((BitmapDrawable) defaultKmlMarker).getBitmap();
return new Style(bitmap, 0x901010AA, 3.0f, 0x20AA1010);
}
use of org.osmdroid.bonuspack.kml.Style in project osmbonuspack by MKergall.
the class KmlStyleListAdapter method getView.
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
String item = (String) getItem(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) viewGroup.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.kml_list_item, null);
}
TextView itemText = (TextView) convertView.findViewById(R.id.listItemTxt);
itemText.setText(item);
ImageView img = (ImageView) convertView.findViewById(R.id.listItemImg);
Style style = MapActivity.mKmlDocument.getStyle(item);
if (style != null && style.mIconStyle != null && style.mIconStyle.mIcon != null)
img.setImageDrawable(style.mIconStyle.getFinalIcon(convertView.getContext()));
else
img.setImageDrawable(null);
return convertView;
}
use of org.osmdroid.bonuspack.kml.Style in project osmbonuspack by MKergall.
the class KmlStylesActivity method onOptionsItemSelected.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.style_option_menu_new:
MapActivity.mKmlDocument.addStyle(new Style());
buildStyleList();
mListAdapter.notifyDataSetChanged();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
use of org.osmdroid.bonuspack.kml.Style in project osmbonuspack by MKergall.
the class MainActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
// Disable StrictMode.ThreadPolicy to perform network calls in the UI thread.
// Yes, it's not the good practice, but this is just a tutorial!
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
// Introduction
super.onCreate(savedInstanceState);
Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
setContentView(R.layout.main);
map = (MapView) findViewById(R.id.map);
map.setMultiTouchControls(true);
GeoPoint startPoint = new GeoPoint(48.13, -1.63);
IMapController mapController = map.getController();
mapController.setZoom(10.0);
mapController.setCenter(startPoint);
// 0. Using the Marker overlay
Marker startMarker = new Marker(map);
startMarker.setPosition(startPoint);
startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
startMarker.setTitle("Start point");
// startMarker.setIcon(getResources().getDrawable(R.drawable.marker_kml_point).mutate());
// startMarker.setImage(getResources().getDrawable(R.drawable.ic_launcher));
// startMarker.setInfoWindow(new MarkerInfoWindow(R.layout.bonuspack_bubble_black, map));
startMarker.setDraggable(true);
startMarker.setOnMarkerDragListener(new OnMarkerDragListenerDrawer());
map.getOverlays().add(startMarker);
// 1. "Hello, Routing World"
RoadManager roadManager = new OSRMRoadManager(this, "OBP_Tuto/1.0");
// 2. Playing with the RoadManager
// ((OSRMRoadManager)roadManager).setMean(OSRMRoadManager.MEAN_BY_BIKE);
ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
waypoints.add(startPoint);
GeoPoint endPoint = new GeoPoint(48.4, -1.9);
waypoints.add(endPoint);
Road road = roadManager.getRoad(waypoints);
if (road.mStatus != Road.STATUS_OK)
Toast.makeText(this, "Error when loading the road - status=" + road.mStatus, Toast.LENGTH_SHORT).show();
Polyline roadOverlay = RoadManager.buildRoadOverlay(road);
map.getOverlays().add(roadOverlay);
// 3. Showing the Route steps on the map
FolderOverlay roadMarkers = new FolderOverlay();
map.getOverlays().add(roadMarkers);
Drawable nodeIcon = ResourcesCompat.getDrawable(getResources(), R.drawable.marker_node, null);
for (int i = 0; i < road.mNodes.size(); i++) {
RoadNode node = road.mNodes.get(i);
Marker nodeMarker = new Marker(map);
nodeMarker.setPosition(node.mLocation);
nodeMarker.setIcon(nodeIcon);
nodeMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER);
// 4. Filling the bubbles
nodeMarker.setTitle("Step " + i);
nodeMarker.setSnippet(node.mInstructions);
nodeMarker.setSubDescription(Road.getLengthDurationText(this, node.mLength, node.mDuration));
Drawable iconContinue = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_continue, null);
nodeMarker.setImage(iconContinue);
// 4. end
roadMarkers.add(nodeMarker);
}
// 5. OpenStreetMap POIs with Nominatim
NominatimPOIProvider poiProvider = new NominatimPOIProvider("OsmNavigator/1.0");
ArrayList<POI> pois = poiProvider.getPOICloseTo(startPoint, "cinema", 50, 0.1);
// or : ArrayList<POI> pois = poiProvider.getPOIAlong(road.getRouteLow(), "fuel", 50, 2.0);
// 6. Wikipedia POIs with GeoNames
/*
GeoNamesPOIProvider poiProvider = new GeoNamesPOIProvider("mkergall");
//BoundingBox bb = map.getBoundingBox();
//ArrayList<POI> pois = poiProvider.getPOIInside(bb, 30);
//=> not possible in onCreate, as map bounding box is not correct until a draw occurs (osmdroid issue).
ArrayList<POI> pois = poiProvider.getPOICloseTo(startPoint, 30, 20.0);
*/
// 8. Quick overview of the Flickr and Picasa POIs */
/*
PicasaPOIProvider poiProvider = new PicasaPOIProvider(null);
BoundingBox bb = BoundingBox.fromGeoPoints(waypoints);
ArrayList<POI> pois = poiProvider.getPOIInside(bb, 20, null);
*/
// FolderOverlay poiMarkers = new FolderOverlay(this);
// 10. Marker Clustering
RadiusMarkerClusterer poiMarkers = new RadiusMarkerClusterer(this);
// end of 10.
// 11.1 Customizing the clusters design
Bitmap clusterIcon = BonusPackHelper.getBitmapFromVectorDrawable(this, R.drawable.marker_poi_cluster);
poiMarkers.setIcon(clusterIcon);
poiMarkers.getTextPaint().setTextSize(12 * getResources().getDisplayMetrics().density);
poiMarkers.mAnchorV = Marker.ANCHOR_BOTTOM;
poiMarkers.mTextAnchorU = 0.70f;
poiMarkers.mTextAnchorV = 0.27f;
// end of 11.1
map.getOverlays().add(poiMarkers);
Drawable poiIcon = ResourcesCompat.getDrawable(getResources(), R.drawable.marker_poi_default, null);
if (pois != null) {
for (POI poi : pois) {
Marker poiMarker = new Marker(map);
poiMarker.setTitle(poi.mType);
poiMarker.setSnippet(poi.mDescription);
poiMarker.setPosition(poi.mLocation);
poiMarker.setIcon(poiIcon);
poiMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
if (poi.mThumbnail != null) {
poiMarker.setImage(new BitmapDrawable(getResources(), poi.mThumbnail));
}
// 7.
poiMarker.setInfoWindow(new CustomInfoWindow(map));
poiMarker.setRelatedObject(poi);
poiMarkers.add(poiMarker);
}
}
// 12. Loading KML content
// String url = "http://mapsengine.google.com/map/kml?forcekml=1&mid=z6IJfj90QEd4.kUUY9FoHFRdE";
mKmlDocument = new KmlDocument();
// boolean ok = mKmlDocument.parseKMLUrl(url);
// Get OpenStreetMap content as KML with Overpass API:
OverpassAPIProvider overpassProvider = new OverpassAPIProvider();
BoundingBox oBB = new BoundingBox(startPoint.getLatitude() + 0.25, startPoint.getLongitude() + 0.25, startPoint.getLatitude() - 0.25, startPoint.getLongitude() - 0.25);
String oUrl = overpassProvider.urlForTagSearchKml("highway=speed_camera", oBB, 500, 30);
boolean ok = overpassProvider.addInKmlFolder(mKmlDocument.mKmlRoot, oUrl);
if (ok) {
// 13.1 Simple styling
Drawable defaultMarker = ResourcesCompat.getDrawable(getResources(), R.drawable.marker_kml_point, null);
Bitmap defaultBitmap = ((BitmapDrawable) defaultMarker).getBitmap();
Style defaultStyle = new Style(defaultBitmap, 0x901010AA, 3.0f, 0x20AA1010);
// 13.2 Advanced styling with Styler
KmlFeature.Styler styler = new MyKmlStyler(defaultStyle);
FolderOverlay kmlOverlay = (FolderOverlay) mKmlDocument.mKmlRoot.buildOverlay(map, defaultStyle, styler, mKmlDocument);
map.getOverlays().add(kmlOverlay);
BoundingBox bb = mKmlDocument.mKmlRoot.getBoundingBox();
if (bb != null) {
// map.zoomToBoundingBox(bb, false); //=> not working in onCreate - this is a well-known osmdroid issue.
// Workaround:
setInitialViewOn(bb);
}
} else
Toast.makeText(this, "Error when loading KML", Toast.LENGTH_SHORT).show();
// 14. Grab overlays in KML structure, save KML document locally
if (mKmlDocument.mKmlRoot != null) {
KmlFolder root = mKmlDocument.mKmlRoot;
root.addOverlay(roadOverlay, mKmlDocument);
root.addOverlay(roadMarkers, mKmlDocument);
mKmlDocument.saveAsKML(mKmlDocument.getDefaultPathForAndroid(this, "my_route.kml"));
// 15. Loading and saving of GeoJSON content
mKmlDocument.saveAsGeoJSON(mKmlDocument.getDefaultPathForAndroid(this, "my_route.json"));
}
// 16. Handling Map events
MapEventsOverlay mapEventsOverlay = new MapEventsOverlay(this);
// inserted at the "bottom" of all overlays
map.getOverlays().add(0, mapEventsOverlay);
checkPermissions();
}
Aggregations