Search in sources :

Example 1 with Style

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;
}
Also used : LineStyle(org.osmdroid.bonuspack.kml.LineStyle) Style(org.osmdroid.bonuspack.kml.Style) LineStyle(org.osmdroid.bonuspack.kml.LineStyle) KmlPlacemark(org.osmdroid.bonuspack.kml.KmlPlacemark) KmlTrack(org.osmdroid.bonuspack.kml.KmlTrack) KmlPoint(org.osmdroid.bonuspack.kml.KmlPoint) Paint(android.graphics.Paint) GeoPoint(org.osmdroid.util.GeoPoint)

Example 2 with Style

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);
}
Also used : Bitmap(android.graphics.Bitmap) Drawable(android.graphics.drawable.Drawable) BitmapDrawable(android.graphics.drawable.BitmapDrawable) Style(org.osmdroid.bonuspack.kml.Style) LineStyle(org.osmdroid.bonuspack.kml.LineStyle) BitmapDrawable(android.graphics.drawable.BitmapDrawable)

Example 3 with Style

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;
}
Also used : LayoutInflater(android.view.LayoutInflater) Style(org.osmdroid.bonuspack.kml.Style) TextView(android.widget.TextView) ImageView(android.widget.ImageView)

Example 4 with Style

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);
    }
}
Also used : Style(org.osmdroid.bonuspack.kml.Style)

Example 5 with Style

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();
}
Also used : RoadNode(org.osmdroid.bonuspack.routing.RoadNode) MapEventsOverlay(org.osmdroid.views.overlay.MapEventsOverlay) ArrayList(java.util.ArrayList) KmlLineString(org.osmdroid.bonuspack.kml.KmlLineString) OSRMRoadManager(org.osmdroid.bonuspack.routing.OSRMRoadManager) StrictMode(android.os.StrictMode) GeoPoint(org.osmdroid.util.GeoPoint) Bitmap(android.graphics.Bitmap) BoundingBox(org.osmdroid.util.BoundingBox) Style(org.osmdroid.bonuspack.kml.Style) IMapController(org.osmdroid.api.IMapController) FolderOverlay(org.osmdroid.views.overlay.FolderOverlay) NominatimPOIProvider(org.osmdroid.bonuspack.location.NominatimPOIProvider) RadiusMarkerClusterer(org.osmdroid.bonuspack.clustering.RadiusMarkerClusterer) OverpassAPIProvider(org.osmdroid.bonuspack.location.OverpassAPIProvider) Road(org.osmdroid.bonuspack.routing.Road) Drawable(android.graphics.drawable.Drawable) BitmapDrawable(android.graphics.drawable.BitmapDrawable) Marker(org.osmdroid.views.overlay.Marker) POI(org.osmdroid.bonuspack.location.POI) BitmapDrawable(android.graphics.drawable.BitmapDrawable) KmlFeature(org.osmdroid.bonuspack.kml.KmlFeature) KmlPoint(org.osmdroid.bonuspack.kml.KmlPoint) Paint(android.graphics.Paint) GeoPoint(org.osmdroid.util.GeoPoint) OSRMRoadManager(org.osmdroid.bonuspack.routing.OSRMRoadManager) RoadManager(org.osmdroid.bonuspack.routing.RoadManager) KmlFolder(org.osmdroid.bonuspack.kml.KmlFolder) Polyline(org.osmdroid.views.overlay.Polyline) KmlDocument(org.osmdroid.bonuspack.kml.KmlDocument)

Aggregations

Style (org.osmdroid.bonuspack.kml.Style)5 Bitmap (android.graphics.Bitmap)2 Paint (android.graphics.Paint)2 BitmapDrawable (android.graphics.drawable.BitmapDrawable)2 Drawable (android.graphics.drawable.Drawable)2 KmlPoint (org.osmdroid.bonuspack.kml.KmlPoint)2 LineStyle (org.osmdroid.bonuspack.kml.LineStyle)2 GeoPoint (org.osmdroid.util.GeoPoint)2 StrictMode (android.os.StrictMode)1 LayoutInflater (android.view.LayoutInflater)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)1 ArrayList (java.util.ArrayList)1 IMapController (org.osmdroid.api.IMapController)1 RadiusMarkerClusterer (org.osmdroid.bonuspack.clustering.RadiusMarkerClusterer)1 KmlDocument (org.osmdroid.bonuspack.kml.KmlDocument)1 KmlFeature (org.osmdroid.bonuspack.kml.KmlFeature)1 KmlFolder (org.osmdroid.bonuspack.kml.KmlFolder)1 KmlLineString (org.osmdroid.bonuspack.kml.KmlLineString)1 KmlPlacemark (org.osmdroid.bonuspack.kml.KmlPlacemark)1