Skip to content

Commit

Permalink
#906 exerpimental shape reader
Browse files Browse the repository at this point in the history
  • Loading branch information
spyhunter99 committed Jan 28, 2018
1 parent 88c980c commit e40ca7a
Show file tree
Hide file tree
Showing 65 changed files with 3,383 additions and 0 deletions.
1 change: 1 addition & 0 deletions OpenStreetMapViewer/build.gradle
Expand Up @@ -32,6 +32,7 @@ dependencies {
compile project(':osmdroid-geopackage')
compile project(':osmdroid-mapsforge')
compile project(':osmdroid-wms')
compile project(':osmdroid-shape')

compile 'mil.army.missioncommand:mil-sym-android-renderer:0.1.37'

Expand Down
Expand Up @@ -30,6 +30,7 @@
import org.osmdroid.samplefragments.data.SampleMilitaryIconsMarker;
import org.osmdroid.samplefragments.data.SampleOsmPath;
import org.osmdroid.samplefragments.data.SampleRace;
import org.osmdroid.samplefragments.data.SampleShapeFile;
import org.osmdroid.samplefragments.data.SampleSimpleFastPointOverlay;
import org.osmdroid.samplefragments.data.SampleSimpleLocation;
import org.osmdroid.samplefragments.data.SampleWithMinimapItemizedOverlayWithFocus;
Expand Down Expand Up @@ -283,6 +284,7 @@ private SampleFactory() {
if (Build.VERSION.SDK_INT >= 15)
mSamples.add(SinglePoints.class);
mSamples.add(WeatherGroundOverlaySample.class);
mSamples.add(SampleShapeFile.class);
}

public void addSample(Class<? extends BaseSampleFragment> clz) {
Expand Down
@@ -0,0 +1,91 @@
package org.osmdroid.samplefragments.data;

import android.os.Build;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import com.github.angads25.filepicker.controller.DialogSelectionListener;
import com.github.angads25.filepicker.model.DialogConfigs;
import com.github.angads25.filepicker.model.DialogProperties;
import com.github.angads25.filepicker.view.FilePickerDialog;

import org.osmdroid.samplefragments.BaseSampleFragment;
import org.osmdroid.shape.ShapeConverter;
import org.osmdroid.tileprovider.modules.ArchiveFileFactory;
import org.osmdroid.views.overlay.FolderOverlay;

import java.io.File;
import java.util.Set;

/**
* created on 1/28/2018.
*
* @author Alex O'Ree
*/

public class SampleShapeFile extends BaseSampleFragment {
@Override
public String getSampleTitle() {
return "Shape File Import";
}
final int MENU_ADD_SHAPE= Menu.FIRST;

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_ADD_SHAPE, Menu.NONE, "Import a shape file");
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {

super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ADD_SHAPE:
showPicker();
return true;
}
return super.onOptionsItemSelected(item);
}

private void showPicker() {
DialogProperties properties = new DialogProperties();
properties.selection_mode = DialogConfigs.SINGLE_MODE;
properties.selection_type = DialogConfigs.FILE_SELECT;
properties.root = new File(DialogConfigs.DEFAULT_DIR);
properties.error_dir = new File(DialogConfigs.DEFAULT_DIR);
properties.offset = new File(DialogConfigs.DEFAULT_DIR);

Set<String> registeredExtensions = ArchiveFileFactory.getRegisteredExtensions();
registeredExtensions.add("shp");


String[] ret = new String[registeredExtensions.size()];
ret = registeredExtensions.toArray(ret);
properties.extensions = ret;

FilePickerDialog dialog = new FilePickerDialog(getContext(), properties);
dialog.setTitle("Select a File");
dialog.setDialogSelectionListener(new DialogSelectionListener() {
@Override
public void onSelectedFilePaths(String[] files) {
//files is the array of the paths of files selected by the Application User.
try {
FolderOverlay folder = ShapeConverter.convert(mMapView, new File(files[0]));
mMapView.getOverlayManager().add(folder);
} catch (Exception e) {
e.printStackTrace();
}

}

});
dialog.show();

}
}
16 changes: 16 additions & 0 deletions osmdroid-shape/build.gradle
@@ -0,0 +1,16 @@
description = 'Shapefile support for osmdroid'

apply plugin: 'com.android.library'
apply from: "https://raw.githubusercontent.com/gradle-fury/gradle-fury/v1.1.4/gradle/android-support.gradle"

android {

}

dependencies {

testCompile 'junit:junit:4.12'
compile project(':osmdroid-android')

}

8 changes: 8 additions & 0 deletions osmdroid-shape/readme.md
@@ -0,0 +1,8 @@
Originally sourced from https://sourceforge.net/projects/javashapefilere/ by Author: olenus
License: ASF 2.0

For sample Shapefiles, try this
http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip

See also https://github.com/osmdroid/osmdroid/issues/906

6 changes: 6 additions & 0 deletions osmdroid-shape/src/main/AndroidManifest.xml
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.osmdroid.shape" >


</manifest>

0 comments on commit e40ca7a

Please sign in to comment.