├── settings.gradle
├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── checkstyle.gradle
├── transportation mode icons.sketch
├── app
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── bike_icon.png
│ │ │ │ ├── moped_icon.png
│ │ │ │ ├── scooter_icon.png
│ │ │ │ ├── ic_directions_walk.png
│ │ │ │ ├── lock_station_lock.png
│ │ │ │ └── selected_scooter_icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── bike_icon.png
│ │ │ │ ├── moped_icon.png
│ │ │ │ ├── scooter_icon.png
│ │ │ │ ├── ic_directions_walk.png
│ │ │ │ ├── lock_station_lock.png
│ │ │ │ └── selected_scooter_icon.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── bike_icon.png
│ │ │ │ ├── moped_icon.png
│ │ │ │ ├── scooter_icon.png
│ │ │ │ ├── lock_station_lock.png
│ │ │ │ ├── ic_directions_walk.png
│ │ │ │ └── selected_scooter_icon.png
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── bike_icon.png
│ │ │ │ ├── moped_icon.png
│ │ │ │ ├── scooter_icon.png
│ │ │ │ ├── ic_directions_walk.png
│ │ │ │ ├── lock_station_lock.png
│ │ │ │ └── selected_scooter_icon.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ │ ├── bike_icon.png
│ │ │ │ ├── moped_icon.png
│ │ │ │ ├── scooter_icon.png
│ │ │ │ ├── lock_station_lock.png
│ │ │ │ ├── ic_directions_walk.png
│ │ │ │ └── selected_scooter_icon.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── values
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── drawables.xml
│ │ │ │ ├── styles.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── colors.xml
│ │ │ ├── values-v21
│ │ │ │ └── styles.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── drawable
│ │ │ │ ├── side_nav_bar.xml
│ │ │ │ ├── ic_layers_black_24dp.xml
│ │ │ │ ├── ic_transform_white_24dp.xml
│ │ │ │ ├── ic_scan_white_24dp.xml
│ │ │ │ ├── ic_payment_black_24dp.xml
│ │ │ │ ├── ic_access_time_white_24dp.xml
│ │ │ │ ├── ic_lock_white_24dp.xml
│ │ │ │ ├── ic_search_white_24dp.xml
│ │ │ │ ├── ic_flame_white_24dp.xml
│ │ │ │ ├── ic_help_black_24dp.xml
│ │ │ │ ├── ic_my_location_white_24dp.xml
│ │ │ │ ├── ic_style_white_24dp.xml
│ │ │ │ ├── ic_cluster_black_24dp.xml
│ │ │ │ ├── ic_directions_bike_black_24dp.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v21
│ │ │ │ ├── ic_menu_send.xml
│ │ │ │ ├── ic_menu_slideshow.xml
│ │ │ │ ├── ic_menu_gallery.xml
│ │ │ │ ├── ic_menu_manage.xml
│ │ │ │ ├── ic_menu_camera.xml
│ │ │ │ └── ic_menu_share.xml
│ │ │ ├── layout
│ │ │ │ ├── nav_fragment_layout.xml
│ │ │ │ ├── content_main.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── app_bar_main.xml
│ │ │ │ ├── nav_header_main.xml
│ │ │ │ └── vehicle_map_fragment_layout.xml
│ │ │ ├── drawable-anydpi
│ │ │ │ ├── ic_account_circle.xml
│ │ │ │ └── ic_camera_alt.xml
│ │ │ ├── menu
│ │ │ │ ├── activity_main_drawer.xml
│ │ │ │ └── main.xml
│ │ │ └── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── mapbox
│ │ │ │ └── mapboxgoshare
│ │ │ │ ├── util
│ │ │ │ ├── IconIdConstants.java
│ │ │ │ ├── SourceIdConstants.java
│ │ │ │ └── LayerIdConstants.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ └── TurnByTurnNavigationFragment.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── mapbox
│ │ │ └── mapboxgoshare
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── mapbox
│ │ └── mapboxgoshare
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
└── build.gradle
├── gradle.properties
├── LICENSE.md
├── .gitignore
├── CONTRIBUTING.md
├── gradlew.bat
├── README.md
├── gradlew
├── datasets
├── bike-preferred-parking.geojson
├── no-go-zones.geojson
├── bike-lock-station-locations.geojson
└── bike-neighboorhood-parking-zones.geojson
└── config
└── checkstyle
└── checkstyle.xml
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/transportation mode icons.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/transportation mode icons.sketch
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/bike_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/bike_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/moped_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/moped_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/bike_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/bike_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/moped_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/moped_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/bike_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/bike_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/moped_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/moped_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/bike_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/bike_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/moped_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/moped_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/bike_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/bike_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/moped_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/moped_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_directions_walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/ic_directions_walk.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/lock_station_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/lock_station_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_directions_walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/ic_directions_walk.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/lock_station_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/lock_station_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/lock_station_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/lock_station_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_directions_walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/ic_directions_walk.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_directions_walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/ic_directions_walk.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/lock_station_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/lock_station_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/lock_station_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/lock_station_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/selected_scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-hdpi/selected_scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/selected_scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-mdpi/selected_scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/selected_scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xhdpi/selected_scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selected_scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxhdpi/selected_scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_directions_walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/ic_directions_walk.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/selected_scooter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mapbox/Micro-Mobility-Demo/HEAD/app/src/main/res/drawable-xxxhdpi/selected_scooter_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #8045CB
4 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Feb 18 17:00:03 PST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/side_nav_bar.xml:
--------------------------------------------------------------------------------
1 |
3 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_send.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 8dp
6 | 176dp
7 | 16dp
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_layers_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/gradle/checkstyle.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'checkstyle'
2 |
3 | checkstyle.toolVersion = '7.1.1'
4 |
5 | task checkstyle(type: Checkstyle) {
6 | description 'Checks if the code adheres to coding standards'
7 | group 'verification'
8 |
9 | configFile = new File(rootDir, "config/checkstyle/checkstyle.xml")
10 | source 'src'
11 | include '**/*.java'
12 | exclude '**/gen/**'
13 |
14 | classpath = files()
15 | ignoreFailures = false
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_transform_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_scan_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/nav_fragment_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/test/java/com/mapbox/mapboxgoshare/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_slideshow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_gallery.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_payment_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_access_time_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_manage.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/mapbox/mapboxgoshare/util/IconIdConstants.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare.util;
2 |
3 | public class IconIdConstants {
4 |
5 | public static final String MOPED_GARAGE_ICON_IMAGE_ID = "MOPED_GARAGE_ICON_IMAGE_ID";
6 | public static final String INDIVIDUAL_BIKE_ICON_IMAGE_ID = "INDIVIDUAL_BIKE_ICON_IMAGE_ID";
7 | public static final String INDIVIDUAL_SCOOTER_ICON_IMAGE_ID = "INDIVIDUAL_SCOOTER_ICON_IMAGE_ID";
8 | public static final String PLACES_PLUGIN_SEARCH_RESULT_SYMBOL_ICON_ID = "PLACES_PLUGIN_SEARCH_RESULT_SYMBOL_ICON_ID";
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lock_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_account_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/drawables.xml:
--------------------------------------------------------------------------------
1 |
2 | - @android:drawable/ic_menu_camera
3 | - @android:drawable/ic_menu_gallery
4 | - @android:drawable/ic_menu_slideshow
5 | - @android:drawable/ic_menu_manage
6 | - @android:drawable/ic_menu_share
7 | - @android:drawable/ic_menu_send
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_flame_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_camera.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_camera_alt.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_my_location_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_share.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_style_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cluster_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/mapbox/mapboxgoshare/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.mapbox.mapboxgoshare", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_directions_bike_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/activity_main_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_bar_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019, Mapbox.
2 |
3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4 |
5 | * Redistributions of source code must retain the above copyright
6 | notice, this list of conditions and the following disclaimer.
7 | * Redistributions in binary form must reproduce the above copyright
8 | notice, this list of conditions and the following disclaimer in
9 | the documentation and/or other materials provided with the
10 | distribution.
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 |
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | *local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # Intellij
36 | *.iml
37 | *.idea/workspace.xml
38 | *.idea/tasks.xml
39 | *.idea/gradle.xml
40 | *.idea/dictionaries
41 | *.idea/libraries
42 |
43 | # Keystore files
44 | *.jks
45 |
46 | # External native build folder generated in Android Studio 2.2 and later
47 | .externalNativeBuild
48 |
49 | # Google Services (e.g. APIs or Firebase)
50 | google-services.json
51 |
52 | # Freeline
53 | freeline.py
54 | freeline/
55 | freeline_project_description.json
56 | *.iml
57 | .gradle/
58 | /local.properties
59 | *.idea/workspace.xml
60 | *.idea/tasks.xml
61 | *.idea/gradle.xml
62 | *.idea/dictionaries
63 | *.idea/libraries
64 | *.idea/caches
65 | .DS_Store
66 | build/
67 | /captures
68 | .externalNativeBuild
69 | */src/main/res/values/dev-config.xml
70 | *.ser
71 |
--------------------------------------------------------------------------------
/app/src/main/java/com/mapbox/mapboxgoshare/util/SourceIdConstants.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare.util;
2 |
3 | public class SourceIdConstants {
4 |
5 | public static final String SELECTED_LOCK_STATION_SOURCE_ID = "SELECTED_LOCK_STATION_SOURCE_ID";
6 | public static final String WALK_TO_VEHICLE_ROUTE_SOURCE_ID = "WALK_TO_VEHICLE_ROUTE_SOURCE_ID";
7 | public static final String MOPED_GARAGE_SOURCE_ID = "MOPED_GARAGE_SOURCE_ID";
8 | public static final String INDIVIDUAL_BIKE_SOURCE_ID = "INDIVIDUAL_BIKE_SOURCE_ID";
9 | public static final String INDIVIDUAL_SCOOTER_SOURCE_ID = "INDIVIDUAL_SCOOTER_SOURCE_ID";
10 | public static final String INDIVIDUAL_SCOOTER_CLUSTER_SOURCE_ID = "INDIVIDUAL_SCOOTER_CLUSTER_SOURCE_ID";
11 | public static final String INDIVIDUAL_BIKE_GEOJSON_CLUSTER_SOURCE_ID = "INDIVIDUAL_BIKE_GEOJSON_CLUSTER_SOURCE_ID";
12 | public static final String NO_PARK_ZONE_SOURCE_ID = "NO_PARK_ZONE_SOURCE_ID";
13 | public static final String PREFERRED_PARKING_ZONE_SOURCE_ID = "PREFERRED_PARKING_ZONE_SOURCE_ID";
14 | public static final String NEIGHBORHOOD_PARK_ZONE_SOURCE_ID = "NEIGHBORHOOD_PARK_ZONE_SOURCE_ID";
15 | public static final String HEATMAP_SOURCE_ID = "HEATMAP_SOURCE_ID";
16 | public static final String PLACES_PLUGIN_SEARCH_RESULT_SOURCE_ID = "PLACES_PLUGIN_SEARCH_RESULT_SOURCE_ID";
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/nav_header_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
21 |
22 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | We welcome contributions to this repository. If you're interested in expanding this project, please follow these steps:
4 |
5 | - [Open a ticket](https://github.com/mapbox/Micro-Mobility-Demo/issues/new) to kick off a conversation, feel free to tag `@langsmith`. He is a member of the Mapbox Android team. It's a good idea to explain your plans before you push any code to make sure no one else is working on something similar and to discuss the best approaches to tackle your particular idea.
6 |
7 | - Create a new branch that will contain the code for your work.
8 |
9 | - Finally, once you're ready to share your code, open a pull request with an explanation of what the pull request resolves. Please request a review from `@langsmith`.
10 |
11 |
12 | # Code of conduct
13 |
14 | Everyone is invited to participate in Mapbox’s open source projects and public discussions: we want to create a welcoming and friendly environment. Harassment of participants or other unethical and unprofessional behavior will not be tolerated in our spaces. The [Contributor Covenant](http://contributor-covenant.org) applies to all projects under the Mapbox organization and we ask that you please read [the full text](http://contributor-covenant.org/version/1/2/0/).
15 |
16 | You can learn more about our open source philosophy on [mapbox.com](https://www.mapbox.com/about/open/).
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/mapbox/mapboxgoshare/util/LayerIdConstants.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare.util;
2 |
3 | public class LayerIdConstants {
4 | public static final String SELECTED_LOCK_STATION_SYMBOL_LAYER_ID = "SELECTED_LOCK_STATION_SYMBOL_LAYER_ID";
5 | public static final String MOPED_GARAGE_LOCATION_SYMBOL_LAYER_ID = "MOPED_GARAGE_LOCATION_SYMBOL_LAYER_ID";
6 | public static final String INDIVIDUAL_BIKE_SYMBOL_LAYER_ID = "INDIVIDUAL_BIKE_SYMBOL_LAYER_ID";
7 | public static final String INDIVIDUAL_SCOOTER_SYMBOL_LAYER_ID = "INDIVIDUAL_SCOOTER_SYMBOL_LAYER_ID";
8 | public static final String NO_PARK_ZONE_FILL_LAYER_ID = "NO_PARK_ZONE_FILL_LAYER_ID";
9 | public static final String PREFERRED_PARKING_ZONE_FILL_LAYER_ID = "PREFERRED_PARKING_ZONE_FILL_LAYER_ID";
10 | public static final String NEIGHBORHOOD_PARKING_ZONE_FILL_LAYER_ID = "NEIGHBORHOOD_PARKING_ZONE_FILL_LAYER_ID";
11 | public static final String NEIGHBORHOOD_PARKING_ZONE_LINE_LAYER_ID = "NEIGHBORHOOD_PARKING_ZONE_LINE_LAYER_ID";
12 | public static final String HEATMAP_LAYER_ID = "HEATMAP_LAYER_ID";
13 | public static final String CLUSTER_COUNT_SYMBOL_LAYER_ID = "CLUSTER_COUNT_SYMBOL_LAYER_ID";
14 | public static final String WALK_TO_VEHICLE_ROUTE_LINE_LAYER_ID = "WALK_TO_VEHICLE_ROUTE_LINE_LAYER_ID";
15 | public static final String PLACES_PLUGIN_SEARCH_RESULT_SYMBOL_LAYER_ID = "PLACES_PLUGIN_SEARCH_RESULT_SYMBOL_LAYER_ID";
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
59 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | applicationId "com.mapbox.mapboxgoshare"
7 | minSdkVersion 16
8 | targetSdkVersion 28
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 |
20 | compileOptions {
21 | sourceCompatibility 1.8
22 | targetCompatibility 1.8
23 | }
24 | }
25 |
26 | dependencies {
27 | implementation fileTree(dir: 'libs', include: ['*.jar'])
28 | implementation 'com.android.support:appcompat-v7:28.0.0'
29 |
30 | implementation 'com.android.support.constraint:constraint-layout:1.1.3'
31 | implementation 'com.android.support:support-v4:28.0.0'
32 | testImplementation 'junit:junit:4.12'
33 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
34 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
35 |
36 | // Mapbox drop-in navigation UI library.
37 | // Adding this dependency automatically includes both the Mapbox Maps SDK for Android
38 | // and the Mapbox Navigation SDK for Android, which is why neither are listed in this file.
39 | implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation-ui:0.34.0'
40 |
41 | // Mapbox Turf library dependency to use distance calculation methods
42 | implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:4.5.0'
43 |
44 | // Mapbox Buildings plugin for showing and customizing 3D building extrusions
45 | implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-building-v7:0.5.0'
46 |
47 | // Mapbox Places Plugin to make geocoding requests
48 | implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-places-v7:0.8.0'
49 |
50 | // Mapbox Localization Plugin to adjust map text to match the device's set language
51 | implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v7:0.9.0'
52 |
53 | }
54 | apply from: "${rootDir}/gradle/checkstyle.gradle"
55 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
4 | # Micro-Mobility-Demo
5 |
6 | This repo contains Mapbox's Android micro-mobility demo app, which goes hand-in-hand with the written guide: [https://blog.mapbox.com/build-the-ultimate-micro-mobility-app-af71f92b858f](https://www.mapbox.com/map-design/guide-to-micro-mobility/?utm_campaign=micro-mobility&utm_medium=referral&utm_source=github)
7 |
8 |
9 | ### Building the app on your device
10 |
11 | - Clone this repo and open the project in Android Studio.
12 |
13 | - Create or log into your Mapbox account and retrieve your default Mapbox access token at [https://www.mapbox.com/account/access-tokens/](https://www.mapbox.com/account/access-tokens/).
14 |
15 | - Go to the `R.strings.xml` file in Android Studio (`app/src/main/res/values/strings.xml`) and paste your access token in the `mapbox_access_token` String resource.
16 |
17 | ```PASTE_YOUR_MAPBOX_TOKEN_HERE```
18 |
19 | - At this point, the project should compile in Android Studio and open on your real or emulated device.
20 |
21 | ### Miscellaneous info:
22 |
23 | - There is no equivalent project for iOS, but the Mapbox Maps SDKs for iOS and Android have "feature parity". What can be done in this project can also be done on iOS devices.
24 |
25 | - The app has lots of toggling which leads to various control flow statements (if/else, etc). Don't worry! If you’re building a similar app, your code will probably be cleaner because you’ll decide to permanently include features which are toggleable in this app.
26 |
27 | - Bikes and scooters are used in this project, but the project is agnostic to the mode of transportation. The global mobility craze includes pedal bikes, electric mopeds, electric-assisted pedal bikes, electric push scooters, heavy-duty electric push scooters, and more. This project can be adjusted for any type of transportation.
28 |
29 |
30 | ### Contributing
31 |
32 | Pull requests and issue reporting are both welcomed! Please see [the contributing guide](https://github.com/mapbox/Micro-Mobility-Demo/blob/master/CONTRIBUTING.md) for more information about contributing to this project.
33 |
34 |
35 | ### Inside the app
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/mapbox/mapboxgoshare/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.view.GravityCompat;
5 | import android.support.v4.widget.DrawerLayout;
6 | import android.support.v7.app.ActionBarDrawerToggle;
7 | import android.support.v7.app.AppCompatActivity;
8 | import android.support.v7.widget.Toolbar;
9 | import android.view.Menu;
10 | import android.view.MenuItem;
11 |
12 | /**
13 | * This activity's main purpose is to hold the fragment container which either holds the VehicleMapFragment or
14 | * TurnByTurnNavigationFragment.
15 | */
16 | public class MainActivity extends AppCompatActivity implements
17 | android.support.design.widget.NavigationView.OnNavigationItemSelectedListener {
18 |
19 | @Override
20 | protected void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 | setContentView(R.layout.activity_main);
23 |
24 | Toolbar toolbar = findViewById(R.id.toolbar);
25 | toolbar.setTitle("");
26 | setSupportActionBar(toolbar);
27 |
28 | DrawerLayout drawer = findViewById(R.id.drawer_layout);
29 | ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
30 | this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
31 | drawer.addDrawerListener(toggle);
32 | toggle.syncState();
33 |
34 | VehicleMapFragment newFragment = new VehicleMapFragment();
35 | android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
36 | transaction.replace(R.id.map_fragment_container, newFragment);
37 | transaction.addToBackStack(null);
38 | transaction.commit();
39 | }
40 |
41 | @SuppressWarnings("StatementWithEmptyBody")
42 | @Override
43 | public boolean onNavigationItemSelected(MenuItem item) {
44 | // Handle navigation view item clicks here.
45 | int id = item.getItemId();
46 | if (id == R.id.navigation_drawer_account) {
47 | // Handle showing account information
48 | } else if (id == R.id.navigation_drawer_payment) {
49 | // Handle showing payment information
50 | } else if (id == R.id.navigation_drawer_help) {
51 | // Handle showing help information
52 | }
53 | DrawerLayout drawer = findViewById(R.id.drawer_layout);
54 | drawer.closeDrawer(GravityCompat.START);
55 | return true;
56 | }
57 |
58 | @Override
59 | public boolean onCreateOptionsMenu(Menu menu) {
60 | // Inflate the menu; this adds items to the action bar if it is present.
61 | getMenuInflater().inflate(R.menu.main, menu);
62 | return true;
63 | }
64 |
65 | @Override
66 | public void onBackPressed() {
67 | DrawerLayout drawer = findViewById(R.id.drawer_layout);
68 | if (drawer.isDrawerOpen(GravityCompat.START)) {
69 | drawer.closeDrawer(GravityCompat.START);
70 | } else {
71 | super.onBackPressed();
72 | finish();
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | GoShare
3 | Mapbox GoShare
4 |
5 | // TODO: FILL IN YOUR OWN MAPBOX ACCESS TOKEN
6 |
7 |
8 |
9 | Micro-mobility with Mapbox\nhttps://github.com/mapbox/Micro-Mobility-Demo
10 | Account
11 | Show account info
12 | Payment
13 | Show payment info
14 | Help
15 | Show helpful info
16 | Open navigation drawer
17 | Close navigation drawer
18 |
19 |
20 | Toggle moped garages
21 | Toggle vehicle type
22 | Search for places
23 | Cycle map styles
24 | Toggle heatmap
25 | Toggle clusters
26 | Open camera
27 |
28 | Travel time unknown
29 | Address unknown
30 |
31 |
32 | Route drawing not possible because there\'s no internet connection!
33 | You might have issues viewing the map because your device isn\'t connected to the internet.
34 |
35 |
36 | Failure to retrieve the navigation route!
37 | Select a destination first!
38 | No route available!
39 |
40 |
41 | Scan
42 | %1$s miles
43 | %1$s minutes,
44 | %1$s mopeds in this garage
45 | %1$s moped in this garage
46 | No routes found
47 | No routes found, make sure you set the right user and access token.
48 |
49 |
50 | This app needs location permissions in order to show its functionality.
51 | You didn\'t grant location permissions.
52 |
53 |
54 | Navigation finished!
55 |
56 |
57 | Can\'t get list of %1$s
58 |
59 |
60 | Add your own code to open camera preview
61 |
62 |
63 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @color/mapboxGray
4 | @color/mapboxGrayDark10
5 | @color/mapboxPink
6 |
7 | #F5F5F5
8 | #DFDFDF
9 | #FFFFFF
10 |
11 | #269561
12 | #33c377
13 | #afdec5
14 | #e8f5ee
15 |
16 | #4264fb
17 | #314ccd
18 | #aab7ef
19 | #edf0fd
20 |
21 | #273d56
22 | #476483
23 | #2d3c4f
24 | #607d9c
25 | #c6d2e1
26 | #f4f7fb
27 |
28 | #b43b71
29 | #ee4e8b
30 | #f8c8da
31 | #fbe5ee
32 |
33 | #5a3fc0
34 | #5E3AD2
35 | #7753eb
36 | #c5b9eb
37 | #916DFF
38 | #f2effa
39 |
40 | #136174
41 | #11b4da
42 | #a4deeb
43 | #d7f1f6
44 |
45 | #ba7334
46 | #f79640
47 | #fbcea6
48 | #feefe2
49 |
50 | #ba3b3f
51 | #f74e4e
52 | #f6b7b7
53 | #fbe5e5
54 |
55 | #a4a62d
56 | #d9d838
57 | #FFF5A0
58 | #FCFCDF
59 |
60 |
61 | #B2000000
62 | #808080
63 | #f1f1f1
64 |
65 |
66 | // Purple theme's colors
67 | #A35BCD
68 | #5D39BA
69 | #C7A8D9
70 | #987DDF
71 | #6A159B
72 | #D080FF
73 |
74 | // Blue theme's colors
75 | #45AAE9
76 | #5CA9E3
77 | #9FCCE0
78 | #6ECAF1
79 | #1082B2
80 | #3997C0
81 | #FAD761
82 |
83 | // Green theme's colors
84 | #5AE323
85 | #404039
86 | #78F645
87 | #3BC802
88 | #000000
89 | #2D7AEB
90 |
91 | // Neutral streets theme's colors
92 | #E8E5E0
93 | #E8E5E0
94 | #FFFFFF
95 | #00BAFF
96 | #000000
97 | #F4A567
98 | #EBF6E3
99 | #4A4A4A
100 |
101 | // Gray theme's colors
102 | #EEF0EF
103 | #696969
104 | #9E9E9E
105 | #696969
106 | #696969
107 | #60BF7E
108 |
109 | #FFFFFF
110 | #000000
111 |
112 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Attempt to set APP_HOME
10 | # Resolve links: $0 may be a link
11 | PRG="$0"
12 | # Need this for relative symlinks.
13 | while [ -h "$PRG" ] ; do
14 | ls=`ls -ld "$PRG"`
15 | link=`expr "$ls" : '.*-> \(.*\)$'`
16 | if expr "$link" : '/.*' > /dev/null; then
17 | PRG="$link"
18 | else
19 | PRG=`dirname "$PRG"`"/$link"
20 | fi
21 | done
22 | SAVED="`pwd`"
23 | cd "`dirname \"$PRG\"`/" >/dev/null
24 | APP_HOME="`pwd -P`"
25 | cd "$SAVED" >/dev/null
26 |
27 | APP_NAME="Gradle"
28 | APP_BASE_NAME=`basename "$0"`
29 |
30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 | DEFAULT_JVM_OPTS=""
32 |
33 | # Use the maximum available, or set MAX_FD != -1 to use that value.
34 | MAX_FD="maximum"
35 |
36 | warn () {
37 | echo "$*"
38 | }
39 |
40 | die () {
41 | echo
42 | echo "$*"
43 | echo
44 | exit 1
45 | }
46 |
47 | # OS specific support (must be 'true' or 'false').
48 | cygwin=false
49 | msys=false
50 | darwin=false
51 | nonstop=false
52 | case "`uname`" in
53 | CYGWIN* )
54 | cygwin=true
55 | ;;
56 | Darwin* )
57 | darwin=true
58 | ;;
59 | MINGW* )
60 | msys=true
61 | ;;
62 | NONSTOP* )
63 | nonstop=true
64 | ;;
65 | esac
66 |
67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 |
69 | # Determine the Java command to use to start the JVM.
70 | if [ -n "$JAVA_HOME" ] ; then
71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 | # IBM's JDK on AIX uses strange locations for the executables
73 | JAVACMD="$JAVA_HOME/jre/sh/java"
74 | else
75 | JAVACMD="$JAVA_HOME/bin/java"
76 | fi
77 | if [ ! -x "$JAVACMD" ] ; then
78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 |
80 | Please set the JAVA_HOME variable in your environment to match the
81 | location of your Java installation."
82 | fi
83 | else
84 | JAVACMD="java"
85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 |
87 | Please set the JAVA_HOME variable in your environment to match the
88 | location of your Java installation."
89 | fi
90 |
91 | # Increase the maximum file descriptors if we can.
92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 | MAX_FD_LIMIT=`ulimit -H -n`
94 | if [ $? -eq 0 ] ; then
95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 | MAX_FD="$MAX_FD_LIMIT"
97 | fi
98 | ulimit -n $MAX_FD
99 | if [ $? -ne 0 ] ; then
100 | warn "Could not set maximum file descriptor limit: $MAX_FD"
101 | fi
102 | else
103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 | fi
105 | fi
106 |
107 | # For Darwin, add options to specify how the application appears in the dock
108 | if $darwin; then
109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 | fi
111 |
112 | # For Cygwin, switch paths to Windows format before running java
113 | if $cygwin ; then
114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 | JAVACMD=`cygpath --unix "$JAVACMD"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Escape application args
158 | save () {
159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 | echo " "
161 | }
162 | APP_ARGS=$(save "$@")
163 |
164 | # Collect all arguments for the java command, following the shell quoting and substitution rules
165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 |
167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 | cd "$(dirname "$0")"
170 | fi
171 |
172 | exec "$JAVACMD" "$@"
173 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/java/com/mapbox/mapboxgoshare/TurnByTurnNavigationFragment.java:
--------------------------------------------------------------------------------
1 | package com.mapbox.mapboxgoshare;
2 |
3 | import android.app.Activity;
4 | import android.app.FragmentTransaction;
5 | import android.content.Context;
6 | import android.os.Build;
7 | import android.os.Bundle;
8 | import android.support.annotation.NonNull;
9 | import android.support.annotation.Nullable;
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 | import android.widget.Toast;
14 |
15 | import com.mapbox.api.directions.v5.models.DirectionsResponse;
16 | import com.mapbox.geojson.Point;
17 | import com.mapbox.services.android.navigation.ui.v5.NavigationView;
18 | import com.mapbox.services.android.navigation.ui.v5.NavigationViewOptions;
19 | import com.mapbox.services.android.navigation.ui.v5.OnNavigationReadyCallback;
20 | import com.mapbox.services.android.navigation.ui.v5.listeners.NavigationListener;
21 | import com.mapbox.services.android.navigation.v5.navigation.NavigationRoute;
22 |
23 | import retrofit2.Call;
24 | import retrofit2.Callback;
25 | import retrofit2.Response;
26 |
27 | import static com.mapbox.api.directions.v5.DirectionsCriteria.PROFILE_WALKING;
28 |
29 | /**
30 | * This fragment shows the Mapbox Navigation SDK for Android's turn-by-turn directions capability.
31 | * The directions guide a user from the device's location to a selected scooter/bike.
32 | */
33 | public class TurnByTurnNavigationFragment extends android.app.Fragment
34 | implements OnNavigationReadyCallback, NavigationListener {
35 |
36 | public Double selectedDestinationLat;
37 | public Double selectedDestinationLong;
38 | public Double selectedOriginLat;
39 | public Double selectedOriginLong;
40 |
41 | private NavigationView navigationView;
42 | private Context context;
43 |
44 | public TurnByTurnNavigationFragment() {
45 | }
46 |
47 | @Override
48 | public void onAttach(Context context) {
49 | super.onAttach(context);
50 | this.context = context;
51 | }
52 |
53 | @Override
54 | public void onAttach(Activity activity) {
55 | super.onAttach(activity);
56 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
57 | this.context = activity;
58 | }
59 | }
60 |
61 | @Override
62 | public void onCreate(@Nullable Bundle savedInstanceState) {
63 | super.onCreate(savedInstanceState);
64 | setHasOptionsMenu(true);
65 | if (getArguments() != null) {
66 | selectedDestinationLat = getArguments().getDouble("NAVIGATION_DESTINATION_LAT");
67 | selectedDestinationLong = getArguments().getDouble("NAVIGATION_DESTINATION_LONG");
68 | selectedOriginLat = getArguments().getDouble("NAVIGATION_ORIGIN_LAT");
69 | selectedOriginLong = getArguments().getDouble("NAVIGATION_ORIGIN_LONG");
70 | }
71 | }
72 |
73 | @Nullable
74 | @Override
75 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
76 | @Nullable Bundle savedInstanceState) {
77 | return inflater.inflate(R.layout.nav_fragment_layout, container, false);
78 | }
79 |
80 | @Override
81 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
82 | super.onViewCreated(view, savedInstanceState);
83 | navigationView = view.findViewById(R.id.turn_by_turn_navigationView);
84 | navigationView.onCreate(savedInstanceState);
85 | navigationView.initialize(this);
86 | }
87 |
88 | @Override
89 | public void onNavigationReady(boolean isRunning) {
90 | NavigationRoute.builder(context)
91 | .accessToken(getString(R.string.mapbox_access_token))
92 | .origin(Point.fromLngLat(selectedOriginLong, selectedOriginLat))
93 | .destination(Point.fromLngLat(selectedDestinationLong, selectedDestinationLat))
94 | .profile(PROFILE_WALKING)
95 | .build()
96 | .getRoute(new Callback() {
97 | @Override
98 | public void onResponse(Call call, Response response) {
99 | NavigationViewOptions options = NavigationViewOptions.builder()
100 | .navigationListener(TurnByTurnNavigationFragment.this)
101 | .directionsRoute(response.body().routes().get(0))
102 | .shouldSimulateRoute(true)
103 | .build();
104 | navigationView.startNavigation(options);
105 | }
106 |
107 | @Override
108 | public void onFailure(Call call, Throwable t) {
109 | Toast.makeText(context, R.string.failure_to_retrieve, Toast.LENGTH_LONG).show();
110 | }
111 | });
112 | }
113 |
114 | @Override
115 | public void onStart() {
116 | super.onStart();
117 | navigationView.onStart();
118 | }
119 |
120 | @Override
121 | public void onResume() {
122 | super.onResume();
123 | navigationView.onResume();
124 | }
125 |
126 | @Override
127 | public void onSaveInstanceState(@NonNull Bundle outState) {
128 | navigationView.onSaveInstanceState(outState);
129 | super.onSaveInstanceState(outState);
130 | }
131 |
132 | @Override
133 | public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
134 | super.onViewStateRestored(savedInstanceState);
135 | if (savedInstanceState != null) {
136 | navigationView.onRestoreInstanceState(savedInstanceState);
137 | }
138 | }
139 |
140 | @Override
141 | public void onPause() {
142 | super.onPause();
143 | navigationView.onPause();
144 | }
145 |
146 | @Override
147 | public void onStop() {
148 | super.onStop();
149 | navigationView.onStop();
150 | }
151 |
152 | @Override
153 | public void onLowMemory() {
154 | super.onLowMemory();
155 | navigationView.onLowMemory();
156 | }
157 |
158 | @Override
159 | public void onDestroyView() {
160 | super.onDestroyView();
161 | navigationView.onDestroy();
162 | }
163 |
164 | @Override
165 | public void onCancelNavigation() {
166 | goBackToVehicleMapFragment();
167 | }
168 |
169 | @Override
170 | public void onNavigationFinished() {
171 | goBackToVehicleMapFragment();
172 | }
173 |
174 | @Override
175 | public void onNavigationRunning() {
176 | }
177 |
178 | private void goBackToVehicleMapFragment() {
179 | VehicleMapFragment newFragment = new VehicleMapFragment();
180 | FragmentTransaction transaction = getFragmentManager().beginTransaction();
181 | transaction.replace(R.id.map_fragment_container, newFragment);
182 | transaction.addToBackStack(null);
183 | transaction.commit();
184 | }
185 | }
186 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/vehicle_map_fragment_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
23 |
24 |
25 |
30 |
31 |
39 |
40 |
41 |
50 |
51 |
59 |
60 |
61 |
68 |
69 |
77 |
78 |
85 |
86 |
101 |
102 |
103 |
104 |
105 |
106 |
119 |
120 |
121 |
126 |
127 |
135 |
136 |
150 |
151 |
152 |
153 |
154 |
161 |
162 |
171 |
--------------------------------------------------------------------------------
/datasets/bike-preferred-parking.geojson:
--------------------------------------------------------------------------------
1 | {
2 | "features": [
3 | {
4 | "type": "Feature",
5 | "properties": {},
6 | "geometry": {
7 | "coordinates": [
8 | [
9 | [
10 | -122.421466,
11 | 37.807499
12 | ],
13 | [
14 | -122.42145,
15 | 37.807434
16 | ],
17 | [
18 | -122.42088,
19 | 37.807499
20 | ],
21 | [
22 | -122.420895,
23 | 37.807562
24 | ],
25 | [
26 | -122.421466,
27 | 37.807499
28 | ]
29 | ]
30 | ],
31 | "type": "Polygon"
32 | },
33 | "id": "03c5d3ee0d9d9bcb2fe6a12abdd34fa7"
34 | },
35 | {
36 | "type": "Feature",
37 | "properties": {},
38 | "geometry": {
39 | "coordinates": [
40 | [
41 | [
42 | -122.389711,
43 | 37.776257
44 | ],
45 | [
46 | -122.389704,
47 | 37.776122
48 | ],
49 | [
50 | -122.388991,
51 | 37.776154
52 | ],
53 | [
54 | -122.389014,
55 | 37.776289
56 | ],
57 | [
58 | -122.389711,
59 | 37.776257
60 | ]
61 | ]
62 | ],
63 | "type": "Polygon"
64 | },
65 | "id": "0798443c2821f63d2fb5c160bbb1fc8c"
66 | },
67 | {
68 | "type": "Feature",
69 | "properties": {},
70 | "geometry": {
71 | "coordinates": [
72 | [
73 | [
74 | -122.511117,
75 | 37.76997
76 | ],
77 | [
78 | -122.511019,
79 | 37.769242
80 | ],
81 | [
82 | -122.510874,
83 | 37.769255
84 | ],
85 | [
86 | -122.510979,
87 | 37.769984
88 | ],
89 | [
90 | -122.511117,
91 | 37.76997
92 | ]
93 | ]
94 | ],
95 | "type": "Polygon"
96 | },
97 | "id": "1694e8fe04c2255181db5f38c66a4864"
98 | },
99 | {
100 | "type": "Feature",
101 | "properties": {},
102 | "geometry": {
103 | "coordinates": [
104 | [
105 | [
106 | -122.411679,
107 | 37.808427
108 | ],
109 | [
110 | -122.411648,
111 | 37.808264
112 | ],
113 | [
114 | -122.41121,
115 | 37.808315
116 | ],
117 | [
118 | -122.411219,
119 | 37.808365
120 | ],
121 | [
122 | -122.411676,
123 | 37.808441
124 | ],
125 | [
126 | -122.411679,
127 | 37.808427
128 | ]
129 | ]
130 | ],
131 | "type": "Polygon"
132 | },
133 | "id": "1a0ec6ff143f8d1f7a7b0927af8771e3"
134 | },
135 | {
136 | "type": "Feature",
137 | "properties": {},
138 | "geometry": {
139 | "coordinates": [
140 | [
141 | [
142 | -122.407354,
143 | 37.80802
144 | ],
145 | [
146 | -122.407408,
147 | 37.807901
148 | ],
149 | [
150 | -122.406806,
151 | 37.807645
152 | ],
153 | [
154 | -122.406705,
155 | 37.807795
156 | ],
157 | [
158 | -122.407354,
159 | 37.80802
160 | ]
161 | ]
162 | ],
163 | "type": "Polygon"
164 | },
165 | "id": "2713c1a43dfa4de21202c5b156721b49"
166 | },
167 | {
168 | "type": "Feature",
169 | "properties": {},
170 | "geometry": {
171 | "coordinates": [
172 | [
173 | [
174 | -122.471892,
175 | 37.773112
176 | ],
177 | [
178 | -122.471888,
179 | 37.773059
180 | ],
181 | [
182 | -122.472964,
183 | 37.773012
184 | ],
185 | [
186 | -122.472968,
187 | 37.773065
188 | ],
189 | [
190 | -122.471892,
191 | 37.773112
192 | ]
193 | ]
194 | ],
195 | "type": "Polygon"
196 | },
197 | "id": "3579b24f129117a4192c1bf01c32019a"
198 | },
199 | {
200 | "type": "Feature",
201 | "properties": {},
202 | "geometry": {
203 | "coordinates": [
204 | [
205 | [
206 | -122.471675,
207 | 37.77312
208 | ],
209 | [
210 | -122.471671,
211 | 37.773067
212 | ],
213 | [
214 | -122.470539,
215 | 37.773114
216 | ],
217 | [
218 | -122.470546,
219 | 37.773172
220 | ],
221 | [
222 | -122.471675,
223 | 37.77312
224 | ]
225 | ]
226 | ],
227 | "type": "Polygon"
228 | },
229 | "id": "3647074f5abff28a6da2ad1c9e58ff6b"
230 | },
231 | {
232 | "type": "Feature",
233 | "properties": {},
234 | "geometry": {
235 | "coordinates": [
236 | [
237 | [
238 | -122.399162,
239 | 37.787623
240 | ],
241 | [
242 | -122.398221,
243 | 37.786874
244 | ],
245 | [
246 | -122.398268,
247 | 37.786826
248 | ],
249 | [
250 | -122.398288,
251 | 37.786813
252 | ],
253 | [
254 | -122.399235,
255 | 37.787578
256 | ],
257 | [
258 | -122.399162,
259 | 37.787623
260 | ]
261 | ]
262 | ],
263 | "type": "Polygon"
264 | },
265 | "id": "3ac4febefaf8264708ce56b7e3c9378f"
266 | },
267 | {
268 | "type": "Feature",
269 | "properties": {},
270 | "geometry": {
271 | "coordinates": [
272 | [
273 | [
274 | -122.388079,
275 | 37.781716
276 | ],
277 | [
278 | -122.387944,
279 | 37.781717
280 | ],
281 | [
282 | -122.387931,
283 | 37.781606
284 | ],
285 | [
286 | -122.388075,
287 | 37.781601
288 | ],
289 | [
290 | -122.388079,
291 | 37.781716
292 | ]
293 | ]
294 | ],
295 | "type": "Polygon"
296 | },
297 | "id": "3d3c004e9f8d5148b95eb44484cef53f"
298 | },
299 | {
300 | "type": "Feature",
301 | "properties": {},
302 | "geometry": {
303 | "coordinates": [
304 | [
305 | [
306 | -122.394624,
307 | 37.794215
308 | ],
309 | [
310 | -122.394216,
311 | 37.79388
312 | ],
313 | [
314 | -122.394149,
315 | 37.793924
316 | ],
317 | [
318 | -122.394576,
319 | 37.794253
320 | ],
321 | [
322 | -122.394624,
323 | 37.794215
324 | ]
325 | ]
326 | ],
327 | "type": "Polygon"
328 | },
329 | "id": "4232399eb66e3677dee20db059b7d987"
330 | },
331 | {
332 | "type": "Feature",
333 | "properties": {},
334 | "geometry": {
335 | "coordinates": [
336 | [
337 | [
338 | -122.389294,
339 | 37.779874
340 | ],
341 | [
342 | -122.389124,
343 | 37.779766
344 | ],
345 | [
346 | -122.389206,
347 | 37.7797
348 | ],
349 | [
350 | -122.389359,
351 | 37.779828
352 | ],
353 | [
354 | -122.389294,
355 | 37.779874
356 | ]
357 | ]
358 | ],
359 | "type": "Polygon"
360 | },
361 | "id": "4b4e7a85cf7a964e9552c7e552c843fe"
362 | },
363 | {
364 | "type": "Feature",
365 | "properties": {},
366 | "geometry": {
367 | "coordinates": [
368 | [
369 | [
370 | -122.434361,
371 | 37.806166
372 | ],
373 | [
374 | -122.434252,
375 | 37.806174
376 | ],
377 | [
378 | -122.434154,
379 | 37.80561
380 | ],
381 | [
382 | -122.434252,
383 | 37.805601
384 | ],
385 | [
386 | -122.434361,
387 | 37.806166
388 | ]
389 | ]
390 | ],
391 | "type": "Polygon"
392 | },
393 | "id": "53b2d6536ebb5597983b0ddd30984788"
394 | },
395 | {
396 | "type": "Feature",
397 | "properties": {},
398 | "geometry": {
399 | "coordinates": [
400 | [
401 | [
402 | -122.401322,
403 | 37.804197
404 | ],
405 | [
406 | -122.401593,
407 | 37.804055
408 | ],
409 | [
410 | -122.401199,
411 | 37.803575
412 | ],
413 | [
414 | -122.40102,
415 | 37.803581
416 | ],
417 | [
418 | -122.400919,
419 | 37.804181
420 | ],
421 | [
422 | -122.401322,
423 | 37.804197
424 | ]
425 | ]
426 | ],
427 | "type": "Polygon"
428 | },
429 | "id": "6f13b10e0180feabe649b51fb4b38a6c"
430 | },
431 | {
432 | "type": "Feature",
433 | "properties": {},
434 | "geometry": {
435 | "coordinates": [
436 | [
437 | [
438 | -122.404433,
439 | 37.806376
440 | ],
441 | [
442 | -122.404536,
443 | 37.806291
444 | ],
445 | [
446 | -122.404495,
447 | 37.806251
448 | ],
449 | [
450 | -122.404474,
451 | 37.806239
452 | ],
453 | [
454 | -122.404195,
455 | 37.80646
456 | ],
457 | [
458 | -122.404263,
459 | 37.806501
460 | ],
461 | [
462 | -122.404433,
463 | 37.806376
464 | ]
465 | ]
466 | ],
467 | "type": "Polygon"
468 | },
469 | "id": "95f295c1ff196ca8619eb6d88a9d4ae5"
470 | },
471 | {
472 | "type": "Feature",
473 | "properties": {},
474 | "geometry": {
475 | "coordinates": [
476 | [
477 | [
478 | -122.510612,
479 | 37.767535
480 | ],
481 | [
482 | -122.510465,
483 | 37.766304
484 | ],
485 | [
486 | -122.510394,
487 | 37.766314
488 | ],
489 | [
490 | -122.510507,
491 | 37.767545
492 | ],
493 | [
494 | -122.510612,
495 | 37.767535
496 | ]
497 | ]
498 | ],
499 | "type": "Polygon"
500 | },
501 | "id": "9cd103646dbb79f57022e1907953f854"
502 | },
503 | {
504 | "type": "Feature",
505 | "properties": {},
506 | "geometry": {
507 | "coordinates": [
508 | [
509 | [
510 | -122.418148,
511 | 37.778485
512 | ],
513 | [
514 | -122.418234,
515 | 37.778476
516 | ],
517 | [
518 | -122.418046,
519 | 37.777547
520 | ],
521 | [
522 | -122.417977,
523 | 37.777547
524 | ],
525 | [
526 | -122.418148,
527 | 37.778485
528 | ]
529 | ]
530 | ],
531 | "type": "Polygon"
532 | },
533 | "id": "9d549e5e132062fdfd88317f4d1364a1"
534 | },
535 | {
536 | "type": "Feature",
537 | "properties": {},
538 | "geometry": {
539 | "coordinates": [
540 | [
541 | [
542 | -122.392942,
543 | 37.794488
544 | ],
545 | [
546 | -122.393037,
547 | 37.794429
548 | ],
549 | [
550 | -122.392785,
551 | 37.794171
552 | ],
553 | [
554 | -122.392681,
555 | 37.794224
556 | ],
557 | [
558 | -122.392942,
559 | 37.794488
560 | ]
561 | ]
562 | ],
563 | "type": "Polygon"
564 | },
565 | "id": "bb1eb5ade78ef21eeebb04929f56a97c"
566 | },
567 | {
568 | "type": "Feature",
569 | "properties": {},
570 | "geometry": {
571 | "coordinates": [
572 | [
573 | [
574 | -122.407251,
575 | 37.782105
576 | ],
577 | [
578 | -122.407533,
579 | 37.781891
580 | ],
581 | [
582 | -122.407074,
583 | 37.781496
584 | ],
585 | [
586 | -122.406775,
587 | 37.78171
588 | ],
589 | [
590 | -122.407251,
591 | 37.782105
592 | ]
593 | ]
594 | ],
595 | "type": "Polygon"
596 | },
597 | "id": "bbd6d70554b4f553b2d94ddf3a849912"
598 | },
599 | {
600 | "type": "Feature",
601 | "properties": {},
602 | "geometry": {
603 | "coordinates": [
604 | [
605 | [
606 | -122.473219,
607 | 37.786406
608 | ],
609 | [
610 | -122.47285,
611 | 37.786418
612 | ],
613 | [
614 | -122.472845,
615 | 37.786331
616 | ],
617 | [
618 | -122.473207,
619 | 37.786316
620 | ],
621 | [
622 | -122.473219,
623 | 37.786406
624 | ]
625 | ]
626 | ],
627 | "type": "Polygon"
628 | },
629 | "id": "d04ce3854e8f10c5cf82137ad8dac93c"
630 | },
631 | {
632 | "type": "Feature",
633 | "properties": {},
634 | "geometry": {
635 | "coordinates": [
636 | [
637 | [
638 | -122.495054,
639 | 37.781625
640 | ],
641 | [
642 | -122.49456,
643 | 37.781657
644 | ],
645 | [
646 | -122.49456,
647 | 37.781601
648 | ],
649 | [
650 | -122.495054,
651 | 37.781577
652 | ],
653 | [
654 | -122.495054,
655 | 37.781625
656 | ]
657 | ]
658 | ],
659 | "type": "Polygon"
660 | },
661 | "id": "ef8836716cd897f9ff5fd7ecbaac5245"
662 | },
663 | {
664 | "type": "Feature",
665 | "properties": {},
666 | "geometry": {
667 | "coordinates": [
668 | [
669 | [
670 | -122.445788,
671 | 37.771576
672 | ],
673 | [
674 | -122.445672,
675 | 37.771589
676 | ],
677 | [
678 | -122.445597,
679 | 37.771218
680 | ],
681 | [
682 | -122.445713,
683 | 37.771209
684 | ],
685 | [
686 | -122.445788,
687 | 37.771576
688 | ]
689 | ]
690 | ],
691 | "type": "Polygon"
692 | },
693 | "id": "f5f8fd4d436c9c321c2d91bc9abde96e"
694 | },
695 | {
696 | "type": "Feature",
697 | "properties": {},
698 | "geometry": {
699 | "coordinates": [
700 | [
701 | [
702 | -122.45457,
703 | 37.777668
704 | ],
705 | [
706 | -122.454558,
707 | 37.777608
708 | ],
709 | [
710 | -122.453465,
711 | 37.777742
712 | ],
713 | [
714 | -122.45349,
715 | 37.777806
716 | ],
717 | [
718 | -122.45457,
719 | 37.777668
720 | ]
721 | ]
722 | ],
723 | "type": "Polygon"
724 | },
725 | "id": "f61a89cac57a5c3dd3f9613bdc7894b3"
726 | }
727 | ],
728 | "type": "FeatureCollection"
729 | }
--------------------------------------------------------------------------------
/datasets/no-go-zones.geojson:
--------------------------------------------------------------------------------
1 | {
2 | "features": [
3 | {
4 | "type": "Feature",
5 | "properties": {},
6 | "geometry": {
7 | "coordinates": [
8 | [
9 | [
10 | -122.476395,
11 | 37.769686
12 | ],
13 | [
14 | -122.476789,
15 | 37.769597
16 | ],
17 | [
18 | -122.477042,
19 | 37.769004
20 | ],
21 | [
22 | -122.476939,
23 | 37.768478
24 | ],
25 | [
26 | -122.476423,
27 | 37.768026
28 | ],
29 | [
30 | -122.475448,
31 | 37.767744
32 | ],
33 | [
34 | -122.474323,
35 | 37.767715
36 | ],
37 | [
38 | -122.473591,
39 | 37.768056
40 | ],
41 | [
42 | -122.473554,
43 | 37.768352
44 | ],
45 | [
46 | -122.473807,
47 | 37.769123
48 | ],
49 | [
50 | -122.474304,
51 | 37.769293
52 | ],
53 | [
54 | -122.475363,
55 | 37.769531
56 | ],
57 | [
58 | -122.476395,
59 | 37.769686
60 | ]
61 | ]
62 | ],
63 | "type": "Polygon"
64 | },
65 | "id": "0564a323a150d39d85e41785defbb9d4"
66 | },
67 | {
68 | "type": "Feature",
69 | "properties": {},
70 | "geometry": {
71 | "coordinates": [
72 | [
73 | [
74 | -122.443224,
75 | 37.770427
76 | ],
77 | [
78 | -122.440463,
79 | 37.770783
80 | ],
81 | [
82 | -122.439548,
83 | 37.770392
84 | ],
85 | [
86 | -122.439083,
87 | 37.769807
88 | ],
89 | [
90 | -122.438429,
91 | 37.769129
92 | ],
93 | [
94 | -122.438909,
95 | 37.76844
96 | ],
97 | [
98 | -122.440216,
99 | 37.767842
100 | ],
101 | [
102 | -122.440725,
103 | 37.766992
104 | ],
105 | [
106 | -122.442076,
107 | 37.765947
108 | ],
109 | [
110 | -122.442672,
111 | 37.766005
112 | ],
113 | [
114 | -122.442948,
115 | 37.766234
116 | ],
117 | [
118 | -122.443006,
119 | 37.766476
120 | ],
121 | [
122 | -122.443515,
123 | 37.766786
124 | ],
125 | [
126 | -122.443747,
127 | 37.767475
128 | ],
129 | [
130 | -122.443268,
131 | 37.768876
132 | ],
133 | [
134 | -122.442338,
135 | 37.769485
136 | ],
137 | [
138 | -122.442352,
139 | 37.769692
140 | ],
141 | [
142 | -122.442788,
143 | 37.769749
144 | ],
145 | [
146 | -122.443035,
147 | 37.769921
148 | ],
149 | [
150 | -122.443268,
151 | 37.770163
152 | ],
153 | [
154 | -122.443224,
155 | 37.770427
156 | ]
157 | ]
158 | ],
159 | "type": "Polygon"
160 | },
161 | "id": "1255e4c0302ee3a64e55f393e5fa57e4"
162 | },
163 | {
164 | "type": "Feature",
165 | "properties": {},
166 | "geometry": {
167 | "coordinates": [
168 | [
169 | [
170 | -122.452371,
171 | 37.772086
172 | ],
173 | [
174 | -122.454055,
175 | 37.771918
176 | ],
177 | [
178 | -122.453886,
179 | 37.771115
180 | ],
181 | [
182 | -122.440817,
183 | 37.77277
184 | ],
185 | [
186 | -122.440981,
187 | 37.773587
188 | ],
189 | [
190 | -122.452371,
191 | 37.772086
192 | ]
193 | ]
194 | ],
195 | "type": "Polygon"
196 | },
197 | "id": "1685d910709f89905831300a793dad2c"
198 | },
199 | {
200 | "type": "Feature",
201 | "properties": {},
202 | "geometry": {
203 | "coordinates": [
204 | [
205 | [
206 | -122.408356,
207 | 37.788277
208 | ],
209 | [
210 | -122.408198,
211 | 37.787394
212 | ],
213 | [
214 | -122.406628,
215 | 37.787597
216 | ],
217 | [
218 | -122.406812,
219 | 37.78849
220 | ],
221 | [
222 | -122.408356,
223 | 37.788277
224 | ]
225 | ]
226 | ],
227 | "type": "Polygon"
228 | },
229 | "id": "1c590b9b7425a8164d058bee1e010f94"
230 | },
231 | {
232 | "type": "Feature",
233 | "properties": {},
234 | "geometry": {
235 | "coordinates": [
236 | [
237 | [
238 | -122.39328,
239 | 37.782141
240 | ],
241 | [
242 | -122.393248,
243 | 37.782031
244 | ],
245 | [
246 | -122.393289,
247 | 37.781915
248 | ],
249 | [
250 | -122.394398,
251 | 37.781049
252 | ],
253 | [
254 | -122.39455,
255 | 37.781035
256 | ],
257 | [
258 | -122.394621,
259 | 37.781073
260 | ],
261 | [
262 | -122.394648,
263 | 37.781169
264 | ],
265 | [
266 | -122.39463,
267 | 37.781233
268 | ],
269 | [
270 | -122.394541,
271 | 37.781307
272 | ],
273 | [
274 | -122.393552,
275 | 37.782091
276 | ],
277 | [
278 | -122.393459,
279 | 37.782134
280 | ],
281 | [
282 | -122.39336,
283 | 37.782155
284 | ],
285 | [
286 | -122.39328,
287 | 37.782141
288 | ]
289 | ]
290 | ],
291 | "type": "Polygon"
292 | },
293 | "id": "21742d096256231cf482128a108cfcb9"
294 | },
295 | {
296 | "type": "Feature",
297 | "properties": {},
298 | "geometry": {
299 | "coordinates": [
300 | [
301 | [
302 | -122.387487,
303 | 37.774296
304 | ],
305 | [
306 | -122.381877,
307 | 37.77459
308 | ],
309 | [
310 | -122.381516,
311 | 37.774103
312 | ],
313 | [
314 | -122.381796,
315 | 37.773965
316 | ],
317 | [
318 | -122.381505,
319 | 37.772005
320 | ],
321 | [
322 | -122.384728,
323 | 37.773404
324 | ],
325 | [
326 | -122.38495,
327 | 37.773422
328 | ],
329 | [
330 | -122.386835,
331 | 37.77333
332 | ],
333 | [
334 | -122.387289,
335 | 37.773201
336 | ],
337 | [
338 | -122.38744,
339 | 37.773643
340 | ],
341 | [
342 | -122.387487,
343 | 37.774296
344 | ]
345 | ]
346 | ],
347 | "type": "Polygon"
348 | },
349 | "id": "312a7d572b63facee6b59f05de018931"
350 | },
351 | {
352 | "type": "Feature",
353 | "properties": {},
354 | "geometry": {
355 | "coordinates": [
356 | [
357 | [
358 | -122.400458,
359 | 37.76482
360 | ],
361 | [
362 | -122.400401,
363 | 37.763787
364 | ],
365 | [
366 | -122.398715,
367 | 37.763832
368 | ],
369 | [
370 | -122.39878,
371 | 37.764916
372 | ],
373 | [
374 | -122.400458,
375 | 37.76482
376 | ]
377 | ]
378 | ],
379 | "type": "Polygon"
380 | },
381 | "id": "469ce435d3839854e1c79aeda05736f6"
382 | },
383 | {
384 | "type": "Feature",
385 | "properties": {},
386 | "geometry": {
387 | "coordinates": [
388 | [
389 | [
390 | -122.406774,
391 | 37.759112
392 | ],
393 | [
394 | -122.406358,
395 | 37.754371
396 | ],
397 | [
398 | -122.403595,
399 | 37.75452
400 | ],
401 | [
402 | -122.403917,
403 | 37.756832
404 | ],
405 | [
406 | -122.404125,
407 | 37.756928
408 | ],
409 | [
410 | -122.404547,
411 | 37.756917
412 | ],
413 | [
414 | -122.404842,
415 | 37.756917
416 | ],
417 | [
418 | -122.40491,
419 | 37.757765
420 | ],
421 | [
422 | -122.406774,
423 | 37.759112
424 | ]
425 | ]
426 | ],
427 | "type": "Polygon"
428 | },
429 | "id": "53821e80419c8f216eb76e52b2906947"
430 | },
431 | {
432 | "type": "Feature",
433 | "properties": {},
434 | "geometry": {
435 | "coordinates": [
436 | [
437 | [
438 | -122.431902,
439 | 37.805339
440 | ],
441 | [
442 | -122.431507,
443 | 37.803474
444 | ],
445 | [
446 | -122.425194,
447 | 37.804236
448 | ],
449 | [
450 | -122.42574,
451 | 37.806441
452 | ],
453 | [
454 | -122.426682,
455 | 37.807993
456 | ],
457 | [
458 | -122.427914,
459 | 37.808232
460 | ],
461 | [
462 | -122.428135,
463 | 37.808305
464 | ],
465 | [
466 | -122.429088,
467 | 37.807975
468 | ],
469 | [
470 | -122.429437,
471 | 37.807626
472 | ],
473 | [
474 | -122.429867,
475 | 37.806799
476 | ],
477 | [
478 | -122.430111,
479 | 37.806321
480 | ],
481 | [
482 | -122.430999,
483 | 37.805895
484 | ],
485 | [
486 | -122.431902,
487 | 37.805339
488 | ]
489 | ]
490 | ],
491 | "type": "Polygon"
492 | },
493 | "id": "5400f19aa1276867370d16e04541cf0e"
494 | },
495 | {
496 | "type": "Feature",
497 | "properties": {},
498 | "geometry": {
499 | "coordinates": [
500 | [
501 | [
502 | -122.419761,
503 | 37.738212
504 | ],
505 | [
506 | -122.420326,
507 | 37.738065
508 | ],
509 | [
510 | -122.420812,
511 | 37.737674
512 | ],
513 | [
514 | -122.420988,
515 | 37.737241
516 | ],
517 | [
518 | -122.420988,
519 | 37.736752
520 | ],
521 | [
522 | -122.420829,
523 | 37.736515
524 | ],
525 | [
526 | -122.420503,
527 | 37.736284
528 | ],
529 | [
530 | -122.420114,
531 | 37.736215
532 | ],
533 | [
534 | -122.41969,
535 | 37.736326
536 | ],
537 | [
538 | -122.419214,
539 | 37.736571
540 | ],
541 | [
542 | -122.41894,
543 | 37.736983
544 | ],
545 | [
546 | -122.418834,
547 | 37.737458
548 | ],
549 | [
550 | -122.418984,
551 | 37.737904
552 | ],
553 | [
554 | -122.419328,
555 | 37.738135
556 | ],
557 | [
558 | -122.419761,
559 | 37.738212
560 | ]
561 | ]
562 | ],
563 | "type": "Polygon"
564 | },
565 | "id": "7680b588d3de7ac712ff8a438eb8fdbe"
566 | },
567 | {
568 | "type": "Feature",
569 | "properties": {},
570 | "geometry": {
571 | "coordinates": [
572 | [
573 | [
574 | -122.429327,
575 | 37.792146
576 | ],
577 | [
578 | -122.429021,
579 | 37.7906
580 | ],
581 | [
582 | -122.425931,
583 | 37.790973
584 | ],
585 | [
586 | -122.42628,
587 | 37.792546
588 | ],
589 | [
590 | -122.429327,
591 | 37.792146
592 | ]
593 | ]
594 | ],
595 | "type": "Polygon"
596 | },
597 | "id": "78d9242859e6791dd5123f7c4a5ae38f"
598 | },
599 | {
600 | "type": "Feature",
601 | "properties": {},
602 | "geometry": {
603 | "coordinates": [
604 | [
605 | [
606 | -122.493934,
607 | 37.76885
608 | ],
609 | [
610 | -122.49512,
611 | 37.768473
612 | ],
613 | [
614 | -122.495523,
615 | 37.767929
616 | ],
617 | [
618 | -122.495502,
619 | 37.767385
620 | ],
621 | [
622 | -122.495173,
623 | 37.767025
624 | ],
625 | [
626 | -122.49475,
627 | 37.76684
628 | ],
629 | [
630 | -122.494315,
631 | 37.76679
632 | ],
633 | [
634 | -122.493828,
635 | 37.76684
636 | ],
637 | [
638 | -122.490301,
639 | 37.767979
640 | ],
641 | [
642 | -122.489994,
643 | 37.768389
644 | ],
645 | [
646 | -122.489973,
647 | 37.768774
648 | ],
649 | [
650 | -122.49011,
651 | 37.769118
652 | ],
653 | [
654 | -122.490333,
655 | 37.769344
656 | ],
657 | [
658 | -122.490608,
659 | 37.769503
660 | ],
661 | [
662 | -122.490947,
663 | 37.76957
664 | ],
665 | [
666 | -122.491286,
667 | 37.769595
668 | ],
669 | [
670 | -122.491615,
671 | 37.769545
672 | ],
673 | [
674 | -122.493934,
675 | 37.76885
676 | ]
677 | ]
678 | ],
679 | "type": "Polygon"
680 | },
681 | "id": "8a91149180af5a16b55765863bc793c9"
682 | },
683 | {
684 | "type": "Feature",
685 | "properties": {},
686 | "geometry": {
687 | "coordinates": [
688 | [
689 | [
690 | -122.397911,
691 | 37.757382
692 | ],
693 | [
694 | -122.39621,
695 | 37.757491
696 | ],
697 | [
698 | -122.395917,
699 | 37.755104
700 | ],
701 | [
702 | -122.397659,
703 | 37.754982
704 | ],
705 | [
706 | -122.397911,
707 | 37.757382
708 | ]
709 | ]
710 | ],
711 | "type": "Polygon"
712 | },
713 | "id": "8de4052b4fed9f498617cd6139b4de19"
714 | },
715 | {
716 | "type": "Feature",
717 | "properties": {},
718 | "geometry": {
719 | "coordinates": [
720 | [
721 | [
722 | -122.46556,
723 | 37.767936
724 | ],
725 | [
726 | -122.466002,
727 | 37.766511
728 | ],
729 | [
730 | -122.46539,
731 | 37.766464
732 | ],
733 | [
734 | -122.462585,
735 | 37.767116
736 | ],
737 | [
738 | -122.463265,
739 | 37.767734
740 | ],
741 | [
742 | -122.463868,
743 | 37.768232
744 | ],
745 | [
746 | -122.464302,
747 | 37.768272
748 | ],
749 | [
750 | -122.464786,
751 | 37.767976
752 | ],
753 | [
754 | -122.46556,
755 | 37.767936
756 | ]
757 | ]
758 | ],
759 | "type": "Polygon"
760 | },
761 | "id": "99122d3ab3e1719768395610920ab0ae"
762 | },
763 | {
764 | "type": "Feature",
765 | "properties": {},
766 | "geometry": {
767 | "coordinates": [
768 | [
769 | [
770 | -122.436427,
771 | 37.777009
772 | ],
773 | [
774 | -122.436056,
775 | 37.77533
776 | ],
777 | [
778 | -122.43299,
779 | 37.775702
780 | ],
781 | [
782 | -122.433347,
783 | 37.777409
784 | ],
785 | [
786 | -122.436427,
787 | 37.777009
788 | ]
789 | ]
790 | ],
791 | "type": "Polygon"
792 | },
793 | "id": "99368f8f08b8ab6437ac96be8797ffd2"
794 | },
795 | {
796 | "type": "Feature",
797 | "properties": {},
798 | "geometry": {
799 | "coordinates": [
800 | [
801 | [
802 | -122.387662,
803 | 37.7759
804 | ],
805 | [
806 | -122.385062,
807 | 37.776275
808 | ],
809 | [
810 | -122.38508,
811 | 37.776338
812 | ],
813 | [
814 | -122.387662,
815 | 37.776012
816 | ],
817 | [
818 | -122.387662,
819 | 37.7759
820 | ]
821 | ]
822 | ],
823 | "type": "Polygon"
824 | },
825 | "id": "9aa728c8958faa640da5f546885c5dcf"
826 | },
827 | {
828 | "type": "Feature",
829 | "properties": {},
830 | "geometry": {
831 | "coordinates": [
832 | [
833 | [
834 | -122.427261,
835 | 37.781986
836 | ],
837 | [
838 | -122.42713,
839 | 37.781258
840 | ],
841 | [
842 | -122.424076,
843 | 37.781633
844 | ],
845 | [
846 | -122.424207,
847 | 37.782376
848 | ],
849 | [
850 | -122.427261,
851 | 37.781986
852 | ]
853 | ]
854 | ],
855 | "type": "Polygon"
856 | },
857 | "id": "9c539aded7685bd84cc07abe640f9883"
858 | },
859 | {
860 | "type": "Feature",
861 | "properties": {},
862 | "geometry": {
863 | "coordinates": [
864 | [
865 | [
866 | -122.410355,
867 | 37.76552
868 | ],
869 | [
870 | -122.410234,
871 | 37.764396
872 | ],
873 | [
874 | -122.408432,
875 | 37.76453
876 | ],
877 | [
878 | -122.408602,
879 | 37.765627
880 | ],
881 | [
882 | -122.410355,
883 | 37.76552
884 | ]
885 | ]
886 | ],
887 | "type": "Polygon"
888 | },
889 | "id": "abfb67d75a33b88698b83615479c315c"
890 | },
891 | {
892 | "type": "Feature",
893 | "properties": {},
894 | "geometry": {
895 | "coordinates": [
896 | [
897 | [
898 | -122.44241,
899 | 37.806695
900 | ],
901 | [
902 | -122.44228,
903 | 37.805949
904 | ],
905 | [
906 | -122.435685,
907 | 37.806813
908 | ],
909 | [
910 | -122.435785,
911 | 37.807527
912 | ],
913 | [
914 | -122.44241,
915 | 37.806695
916 | ]
917 | ]
918 | ],
919 | "type": "Polygon"
920 | },
921 | "id": "cea29cb8ab3c3b705447834585781bef"
922 | },
923 | {
924 | "type": "Feature",
925 | "properties": {},
926 | "geometry": {
927 | "coordinates": [
928 | [
929 | [
930 | -122.456593,
931 | 37.767642
932 | ],
933 | [
934 | -122.457403,
935 | 37.767345
936 | ],
937 | [
938 | -122.457473,
939 | 37.766336
940 | ],
941 | [
942 | -122.45709,
943 | 37.76622
944 | ],
945 | [
946 | -122.45519,
947 | 37.766225
948 | ],
949 | [
950 | -122.454826,
951 | 37.766311
952 | ],
953 | [
954 | -122.454418,
955 | 37.766467
956 | ],
957 | [
958 | -122.454603,
959 | 37.767118
960 | ],
961 | [
962 | -122.454845,
963 | 37.767541
964 | ],
965 | [
966 | -122.456593,
967 | 37.767642
968 | ]
969 | ]
970 | ],
971 | "type": "Polygon"
972 | },
973 | "id": "f13522e9aab1e7935a0b52249c42ff38"
974 | },
975 | {
976 | "type": "Feature",
977 | "properties": {},
978 | "geometry": {
979 | "coordinates": [
980 | [
981 | [
982 | -122.428322,
983 | 37.761238
984 | ],
985 | [
986 | -122.42802,
987 | 37.758161
988 | ],
989 | [
990 | -122.425949,
991 | 37.758297
992 | ],
993 | [
994 | -122.426231,
995 | 37.761357
996 | ],
997 | [
998 | -122.428322,
999 | 37.761238
1000 | ]
1001 | ]
1002 | ],
1003 | "type": "Polygon"
1004 | },
1005 | "id": "f99f61b23f1c7b0e62367297a101275b"
1006 | }
1007 | ],
1008 | "type": "FeatureCollection"
1009 | }
--------------------------------------------------------------------------------
/config/checkstyle/checkstyle.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
77 |
78 |
79 |
81 |
82 |
83 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
98 |
99 |
100 |
102 |
103 |
104 |
108 |
109 |
110 |
112 |
113 |
114 |
118 |
119 |
120 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
175 |
176 |
177 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
262 |
263 |
264 |
265 |
266 |
267 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
282 |
283 |
284 |
288 |
289 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
322 |
324 |
325 |
326 |
327 |
328 |
330 |
332 |
334 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
352 |
353 |
354 |
355 |
356 |
357 |
359 |
360 |
361 |
362 |
363 |
364 |
369 |
370 |
371 |
372 |
373 |
374 |
376 |
377 |
378 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
427 |
428 |
429 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
510 |
511 |
512 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
--------------------------------------------------------------------------------
/datasets/bike-lock-station-locations.geojson:
--------------------------------------------------------------------------------
1 | {
2 | "features": [
3 | {
4 | "type": "Feature",
5 | "properties": {},
6 | "geometry": {
7 | "coordinates": [
8 | -122.492077,
9 | 37.776897
10 | ],
11 | "type": "Point"
12 | },
13 | "id": "020859c42335fcf812113a9fb9c9a42d"
14 | },
15 | {
16 | "type": "Feature",
17 | "properties": {},
18 | "geometry": {
19 | "coordinates": [
20 | -122.468244,
21 | 37.746935
22 | ],
23 | "type": "Point"
24 | },
25 | "id": "04babdba7934ab009e8c011e862a4493"
26 | },
27 | {
28 | "type": "Feature",
29 | "properties": {},
30 | "geometry": {
31 | "coordinates": [
32 | -122.412259,
33 | 37.782144
34 | ],
35 | "type": "Point"
36 | },
37 | "id": "04d64850970801321978c7a0f50dfaad"
38 | },
39 | {
40 | "type": "Feature",
41 | "properties": {},
42 | "geometry": {
43 | "coordinates": [
44 | -122.406483,
45 | 37.790346
46 | ],
47 | "type": "Point"
48 | },
49 | "id": "05ff542ebb0e34bcbd26ee90ff35b74a"
50 | },
51 | {
52 | "type": "Feature",
53 | "properties": {},
54 | "geometry": {
55 | "coordinates": [
56 | -122.408324,
57 | 37.776249
58 | ],
59 | "type": "Point"
60 | },
61 | "id": "0640229b656c1a7134b8ec4e5e130dab"
62 | },
63 | {
64 | "type": "Feature",
65 | "properties": {},
66 | "geometry": {
67 | "coordinates": [
68 | -122.434319,
69 | 37.753786
70 | ],
71 | "type": "Point"
72 | },
73 | "id": "0ece25e5c42bfdcb3b5e7883079c736f"
74 | },
75 | {
76 | "type": "Feature",
77 | "properties": {},
78 | "geometry": {
79 | "coordinates": [
80 | -122.424832,
81 | 37.759918
82 | ],
83 | "type": "Point"
84 | },
85 | "id": "12fdff96a095852231754131b8d870eb"
86 | },
87 | {
88 | "type": "Feature",
89 | "properties": {},
90 | "geometry": {
91 | "coordinates": [
92 | -122.419525,
93 | 37.802544
94 | ],
95 | "type": "Point"
96 | },
97 | "id": "13bf69b2d9f7ad541ef3dd7a176c257b"
98 | },
99 | {
100 | "type": "Feature",
101 | "properties": {},
102 | "geometry": {
103 | "coordinates": [
104 | -122.483123,
105 | 37.785699
106 | ],
107 | "type": "Point"
108 | },
109 | "id": "141a186bfd7d06301236cf3c4eccb5cc"
110 | },
111 | {
112 | "type": "Feature",
113 | "properties": {},
114 | "geometry": {
115 | "coordinates": [
116 | -122.418627,
117 | 37.760289
118 | ],
119 | "type": "Point"
120 | },
121 | "id": "14ffe20ba94ebfb34b6d20ffbeaf7312"
122 | },
123 | {
124 | "type": "Feature",
125 | "properties": {},
126 | "geometry": {
127 | "coordinates": [
128 | -122.45861,
129 | 37.777673
130 | ],
131 | "type": "Point"
132 | },
133 | "id": "186539eb8c0abfa9d0317ebbd8d56693"
134 | },
135 | {
136 | "type": "Feature",
137 | "properties": {},
138 | "geometry": {
139 | "coordinates": [
140 | -122.414641,
141 | 37.786433
142 | ],
143 | "type": "Point"
144 | },
145 | "id": "197caf51bc9ab46e060e5ddb88a35b0b"
146 | },
147 | {
148 | "type": "Feature",
149 | "properties": {},
150 | "geometry": {
151 | "coordinates": [
152 | -122.430295,
153 | 37.769424
154 | ],
155 | "type": "Point"
156 | },
157 | "id": "1c73b7045c273c5e762e2966226bc688"
158 | },
159 | {
160 | "type": "Feature",
161 | "properties": {},
162 | "geometry": {
163 | "coordinates": [
164 | -122.474105,
165 | 37.782458
166 | ],
167 | "type": "Point"
168 | },
169 | "id": "1d9c9b08e6e564b6ffd0698cc0be0081"
170 | },
171 | {
172 | "type": "Feature",
173 | "properties": {},
174 | "geometry": {
175 | "coordinates": [
176 | -122.415359,
177 | 37.770271
178 | ],
179 | "type": "Point"
180 | },
181 | "id": "1e120b4f1877d1dd7ee9c9adebf97baf"
182 | },
183 | {
184 | "type": "Feature",
185 | "properties": {},
186 | "geometry": {
187 | "coordinates": [
188 | -122.432948,
189 | 37.76123
190 | ],
191 | "type": "Point"
192 | },
193 | "id": "22d829e84c01dfe739d9275f84aef8dd"
194 | },
195 | {
196 | "type": "Feature",
197 | "properties": {},
198 | "geometry": {
199 | "coordinates": [
200 | -122.414175,
201 | 37.755705
202 | ],
203 | "type": "Point"
204 | },
205 | "id": "2936a70a83733e433657a0c5f44522ec"
206 | },
207 | {
208 | "type": "Feature",
209 | "properties": {},
210 | "geometry": {
211 | "coordinates": [
212 | -122.417782,
213 | 37.773818
214 | ],
215 | "type": "Point"
216 | },
217 | "id": "29999f93f6ace1a07e713328d2521c85"
218 | },
219 | {
220 | "type": "Feature",
221 | "properties": {},
222 | "geometry": {
223 | "coordinates": [
224 | -122.425974,
225 | 37.774846
226 | ],
227 | "type": "Point"
228 | },
229 | "id": "2a55f6d26044a102f441d81acdbe5c40"
230 | },
231 | {
232 | "type": "Feature",
233 | "properties": {},
234 | "geometry": {
235 | "coordinates": [
236 | -122.478117,
237 | 37.776665
238 | ],
239 | "type": "Point"
240 | },
241 | "id": "2acd27fa5d51a8974da863e84e9f2dae"
242 | },
243 | {
244 | "type": "Feature",
245 | "properties": {},
246 | "geometry": {
247 | "coordinates": [
248 | -122.432227,
249 | 37.764281
250 | ],
251 | "type": "Point"
252 | },
253 | "id": "2b3d265e2e96cec79c56d470ebac0bfd"
254 | },
255 | {
256 | "type": "Feature",
257 | "properties": {},
258 | "geometry": {
259 | "coordinates": [
260 | -122.394075,
261 | 37.792653
262 | ],
263 | "type": "Point"
264 | },
265 | "id": "2e897e1bea3514d9aa2149d31b1f7430"
266 | },
267 | {
268 | "type": "Feature",
269 | "properties": {},
270 | "geometry": {
271 | "coordinates": [
272 | -122.460739,
273 | 37.76586
274 | ],
275 | "type": "Point"
276 | },
277 | "id": "397e4dd7486acfa58028df748ab47ab6"
278 | },
279 | {
280 | "type": "Feature",
281 | "properties": {},
282 | "geometry": {
283 | "coordinates": [
284 | -122.43998,
285 | 37.777447
286 | ],
287 | "type": "Point"
288 | },
289 | "id": "3a977428c93814933eea5603e8fec9ec"
290 | },
291 | {
292 | "type": "Feature",
293 | "properties": {},
294 | "geometry": {
295 | "coordinates": [
296 | -122.405311,
297 | 37.783574
298 | ],
299 | "type": "Point"
300 | },
301 | "id": "3c01e5cbb47f3898e8da93ad53fd36f2"
302 | },
303 | {
304 | "type": "Feature",
305 | "properties": {},
306 | "geometry": {
307 | "coordinates": [
308 | -122.471349,
309 | 37.762791
310 | ],
311 | "type": "Point"
312 | },
313 | "id": "3deeaa13e1462d5fb9556d5cc52a5eaa"
314 | },
315 | {
316 | "type": "Feature",
317 | "properties": {},
318 | "geometry": {
319 | "coordinates": [
320 | -122.47109,
321 | 37.758802
322 | ],
323 | "type": "Point"
324 | },
325 | "id": "3ffc45c1864c948b6098e28194b54341"
326 | },
327 | {
328 | "type": "Feature",
329 | "properties": {},
330 | "geometry": {
331 | "coordinates": [
332 | -122.418703,
333 | 37.789267
334 | ],
335 | "type": "Point"
336 | },
337 | "id": "42c04c8f486df554ea8aff4a22ef2bb5"
338 | },
339 | {
340 | "type": "Feature",
341 | "properties": {},
342 | "geometry": {
343 | "coordinates": [
344 | -122.500578,
345 | 37.77621
346 | ],
347 | "type": "Point"
348 | },
349 | "id": "45769e20f64f08c63d1e8c5f6c0ee5c8"
350 | },
351 | {
352 | "type": "Feature",
353 | "properties": {},
354 | "geometry": {
355 | "coordinates": [
356 | -122.430026,
357 | 37.751562
358 | ],
359 | "type": "Point"
360 | },
361 | "id": "473ffa4a1617c1fd60642a8a3d130a2c"
362 | },
363 | {
364 | "type": "Feature",
365 | "properties": {},
366 | "geometry": {
367 | "coordinates": [
368 | -122.441376,
369 | 37.781988
370 | ],
371 | "type": "Point"
372 | },
373 | "id": "48cde9c48f334030bc2ec2cf4c641c94"
374 | },
375 | {
376 | "type": "Feature",
377 | "properties": {},
378 | "geometry": {
379 | "coordinates": [
380 | -122.412957,
381 | 37.789769
382 | ],
383 | "type": "Point"
384 | },
385 | "id": "4b9d21b3570d948158cab5aeb8a1cee6"
386 | },
387 | {
388 | "type": "Feature",
389 | "properties": {},
390 | "geometry": {
391 | "coordinates": [
392 | -122.485711,
393 | 37.752562
394 | ],
395 | "type": "Point"
396 | },
397 | "id": "4e4dc922a06d28de724f05344fd98914"
398 | },
399 | {
400 | "type": "Feature",
401 | "properties": {},
402 | "geometry": {
403 | "coordinates": [
404 | -122.429655,
405 | 37.799969
406 | ],
407 | "type": "Point"
408 | },
409 | "id": "4f2f22c1e121f97e3884a933e8687a96"
410 | },
411 | {
412 | "type": "Feature",
413 | "properties": {},
414 | "geometry": {
415 | "coordinates": [
416 | -122.434886,
417 | 37.771588
418 | ],
419 | "type": "Point"
420 | },
421 | "id": "59e6ecd5d558e4f199af5b9c7d76de34"
422 | },
423 | {
424 | "type": "Feature",
425 | "properties": {},
426 | "geometry": {
427 | "coordinates": [
428 | -122.446507,
429 | 37.759006
430 | ],
431 | "type": "Point"
432 | },
433 | "id": "5c0724954747fa804b5d97ed2ef63253"
434 | },
435 | {
436 | "type": "Feature",
437 | "properties": {},
438 | "geometry": {
439 | "coordinates": [
440 | -122.430205,
441 | 37.779666
442 | ],
443 | "type": "Point"
444 | },
445 | "id": "6059979eff6825503e5ae4465dd61dbb"
446 | },
447 | {
448 | "type": "Feature",
449 | "properties": {},
450 | "geometry": {
451 | "coordinates": [
452 | -122.421785,
453 | 37.779863
454 | ],
455 | "type": "Point"
456 | },
457 | "id": "61d616a8d4833b8650bd28c23b3e4670"
458 | },
459 | {
460 | "type": "Feature",
461 | "properties": {},
462 | "geometry": {
463 | "coordinates": [
464 | -122.476783,
465 | 37.754506
466 | ],
467 | "type": "Point"
468 | },
469 | "id": "65d2665cbb0893af04ae3fe5015a3404"
470 | },
471 | {
472 | "type": "Feature",
473 | "properties": {},
474 | "geometry": {
475 | "coordinates": [
476 | -122.418005,
477 | 37.785229
478 | ],
479 | "type": "Point"
480 | },
481 | "id": "68c93664364405f05692b03a03ed2e44"
482 | },
483 | {
484 | "type": "Feature",
485 | "properties": {},
486 | "geometry": {
487 | "coordinates": [
488 | -122.405309,
489 | 37.753681
490 | ],
491 | "type": "Point"
492 | },
493 | "id": "6f86e84a83627152b3e1bfbde75741bf"
494 | },
495 | {
496 | "type": "Feature",
497 | "properties": {},
498 | "geometry": {
499 | "coordinates": [
500 | -122.396709,
501 | 37.778306
502 | ],
503 | "type": "Point"
504 | },
505 | "id": "716e114b1f1076695bbb3ba0861cc29e"
506 | },
507 | {
508 | "type": "Feature",
509 | "properties": {},
510 | "geometry": {
511 | "coordinates": [
512 | -122.49722,
513 | 37.774332
514 | ],
515 | "type": "Point"
516 | },
517 | "id": "71c8fcec06d7c28e14f47a2727341d67"
518 | },
519 | {
520 | "type": "Feature",
521 | "properties": {},
522 | "geometry": {
523 | "coordinates": [
524 | -122.463845,
525 | 37.760336
526 | ],
527 | "type": "Point"
528 | },
529 | "id": "74a29822b7273d32eda3cdcfaefc8c4c"
530 | },
531 | {
532 | "type": "Feature",
533 | "properties": {},
534 | "geometry": {
535 | "coordinates": [
536 | -122.409503,
537 | 37.744684
538 | ],
539 | "type": "Point"
540 | },
541 | "id": "75c6b34b34d00232e2549d41e2d91f8b"
542 | },
543 | {
544 | "type": "Feature",
545 | "properties": {},
546 | "geometry": {
547 | "coordinates": [
548 | -122.437774,
549 | 37.767223
550 | ],
551 | "type": "Point"
552 | },
553 | "id": "77f8479e609d597f93cdc51168b94d63"
554 | },
555 | {
556 | "type": "Feature",
557 | "properties": {},
558 | "geometry": {
559 | "coordinates": [
560 | -122.485838,
561 | 37.780874
562 | ],
563 | "type": "Point"
564 | },
565 | "id": "78309761c2980f96dee3c4837768517b"
566 | },
567 | {
568 | "type": "Feature",
569 | "properties": {},
570 | "geometry": {
571 | "coordinates": [
572 | -122.449565,
573 | 37.77529
574 | ],
575 | "type": "Point"
576 | },
577 | "id": "796cb6625c438e2b963fbb2ba6800fc0"
578 | },
579 | {
580 | "type": "Feature",
581 | "properties": {},
582 | "geometry": {
583 | "coordinates": [
584 | -122.402606,
585 | 37.764739
586 | ],
587 | "type": "Point"
588 | },
589 | "id": "7b0e4a26d1a59a9a1da3aa78cb7e9e6a"
590 | },
591 | {
592 | "type": "Feature",
593 | "properties": {},
594 | "geometry": {
595 | "coordinates": [
596 | -122.404556,
597 | 37.798183
598 | ],
599 | "type": "Point"
600 | },
601 | "id": "7bcbe90e18becce3423ac0223ff29c30"
602 | },
603 | {
604 | "type": "Feature",
605 | "properties": {},
606 | "geometry": {
607 | "coordinates": [
608 | -122.441677,
609 | 37.788858
610 | ],
611 | "type": "Point"
612 | },
613 | "id": "7d954b709245ce6b542b1f518e2322b4"
614 | },
615 | {
616 | "type": "Feature",
617 | "properties": {},
618 | "geometry": {
619 | "coordinates": [
620 | -122.409435,
621 | 37.788239
622 | ],
623 | "type": "Point"
624 | },
625 | "id": "80cb4282b18ff86253092b357c318c5f"
626 | },
627 | {
628 | "type": "Feature",
629 | "properties": {},
630 | "geometry": {
631 | "coordinates": [
632 | -122.405798,
633 | 37.793407
634 | ],
635 | "type": "Point"
636 | },
637 | "id": "850da54ee61d15bd80f6c10a277f0a67"
638 | },
639 | {
640 | "type": "Feature",
641 | "properties": {},
642 | "geometry": {
643 | "coordinates": [
644 | -122.471608,
645 | 37.777826
646 | ],
647 | "type": "Point"
648 | },
649 | "id": "86064f5bf3e1c8a62fd7e9ea7910e1d0"
650 | },
651 | {
652 | "type": "Feature",
653 | "properties": {},
654 | "geometry": {
655 | "coordinates": [
656 | -122.397451,
657 | 37.781812
658 | ],
659 | "type": "Point"
660 | },
661 | "id": "8bd9e9315d1d24886dcb8c4ef1707aab"
662 | },
663 | {
664 | "type": "Feature",
665 | "properties": {},
666 | "geometry": {
667 | "coordinates": [
668 | -122.395498,
669 | 37.788113
670 | ],
671 | "type": "Point"
672 | },
673 | "id": "8d50d65d3e39679df7af158e5979381d"
674 | },
675 | {
676 | "type": "Feature",
677 | "properties": {},
678 | "geometry": {
679 | "coordinates": [
680 | -122.448486,
681 | 37.769444
682 | ],
683 | "type": "Point"
684 | },
685 | "id": "8e86f803238aa9cdf208666248dcffbb"
686 | },
687 | {
688 | "type": "Feature",
689 | "properties": {},
690 | "geometry": {
691 | "coordinates": [
692 | -122.402322,
693 | 37.762265
694 | ],
695 | "type": "Point"
696 | },
697 | "id": "908ec3c8e63d15d99bd87de4277f05a2"
698 | },
699 | {
700 | "type": "Feature",
701 | "properties": {},
702 | "geometry": {
703 | "coordinates": [
704 | -122.416709,
705 | 37.794369
706 | ],
707 | "type": "Point"
708 | },
709 | "id": "9144e788f31dc97f413c475445f13ca6"
710 | },
711 | {
712 | "type": "Feature",
713 | "properties": {},
714 | "geometry": {
715 | "coordinates": [
716 | -122.454421,
717 | 37.782063
718 | ],
719 | "type": "Point"
720 | },
721 | "id": "919181c5c1cfe13d19d9d0e80d49c987"
722 | },
723 | {
724 | "type": "Feature",
725 | "properties": {},
726 | "geometry": {
727 | "coordinates": [
728 | -122.436674,
729 | 37.804205
730 | ],
731 | "type": "Point"
732 | },
733 | "id": "964db28b59939c63764befb17fe2832f"
734 | },
735 | {
736 | "type": "Feature",
737 | "properties": {},
738 | "geometry": {
739 | "coordinates": [
740 | -122.423925,
741 | 37.751875
742 | ],
743 | "type": "Point"
744 | },
745 | "id": "9816bccb6d2a67d683ec3ce8a0ac09f6"
746 | },
747 | {
748 | "type": "Feature",
749 | "properties": {},
750 | "geometry": {
751 | "coordinates": [
752 | -122.392393,
753 | 37.779059
754 | ],
755 | "type": "Point"
756 | },
757 | "id": "9c93adba1c29c7674d243098f1cd718c"
758 | },
759 | {
760 | "type": "Feature",
761 | "properties": {},
762 | "geometry": {
763 | "coordinates": [
764 | -122.401658,
765 | 37.755705
766 | ],
767 | "type": "Point"
768 | },
769 | "id": "9e68a7e2e93ddc8754427d19e21346ec"
770 | },
771 | {
772 | "type": "Feature",
773 | "properties": {},
774 | "geometry": {
775 | "coordinates": [
776 | -122.448448,
777 | 37.766064
778 | ],
779 | "type": "Point"
780 | },
781 | "id": "a235339f9e6c169fe12b06a7a77c1785"
782 | },
783 | {
784 | "type": "Feature",
785 | "properties": {},
786 | "geometry": {
787 | "coordinates": [
788 | -122.396747,
789 | 37.790533
790 | ],
791 | "type": "Point"
792 | },
793 | "id": "a40113f7812d9c5a5df2870aa44d4e51"
794 | },
795 | {
796 | "type": "Feature",
797 | "properties": {},
798 | "geometry": {
799 | "coordinates": [
800 | -122.45458,
801 | 37.783619
802 | ],
803 | "type": "Point"
804 | },
805 | "id": "aa275a5626c43b639b20d172dfbcda0c"
806 | },
807 | {
808 | "type": "Feature",
809 | "properties": {},
810 | "geometry": {
811 | "coordinates": [
812 | -122.440814,
813 | 37.795413
814 | ],
815 | "type": "Point"
816 | },
817 | "id": "aa630296d6fcb55e8deb3a1342481051"
818 | },
819 | {
820 | "type": "Feature",
821 | "properties": {},
822 | "geometry": {
823 | "coordinates": [
824 | -122.465238,
825 | 37.779077
826 | ],
827 | "type": "Point"
828 | },
829 | "id": "b2f769e9b71d0f288f3cf48f1f548ad2"
830 | },
831 | {
832 | "type": "Feature",
833 | "properties": {},
834 | "geometry": {
835 | "coordinates": [
836 | -122.488839,
837 | 37.77729
838 | ],
839 | "type": "Point"
840 | },
841 | "id": "b51520646b9fecdf88bb6ab5af276a93"
842 | },
843 | {
844 | "type": "Feature",
845 | "properties": {},
846 | "geometry": {
847 | "coordinates": [
848 | -122.402389,
849 | 37.791073
850 | ],
851 | "type": "Point"
852 | },
853 | "id": "b74a95a5188240a12238934530842458"
854 | },
855 | {
856 | "type": "Feature",
857 | "properties": {},
858 | "geometry": {
859 | "coordinates": [
860 | -122.415455,
861 | 37.792141
862 | ],
863 | "type": "Point"
864 | },
865 | "id": "ba7e7371a6aa77f09fe90d0e9bd82a57"
866 | },
867 | {
868 | "type": "Feature",
869 | "properties": {},
870 | "geometry": {
871 | "coordinates": [
872 | -122.419854,
873 | 37.765194
874 | ],
875 | "type": "Point"
876 | },
877 | "id": "bac29b1414806ae326f4d80027652e1f"
878 | },
879 | {
880 | "type": "Feature",
881 | "properties": {},
882 | "geometry": {
883 | "coordinates": [
884 | -122.449438,
885 | 37.773358
886 | ],
887 | "type": "Point"
888 | },
889 | "id": "bb93556c741089a85eae5aabe5d10f64"
890 | },
891 | {
892 | "type": "Feature",
893 | "properties": {},
894 | "geometry": {
895 | "coordinates": [
896 | -122.413731,
897 | 37.793346
898 | ],
899 | "type": "Point"
900 | },
901 | "id": "beb643cd6020985bf94a5ce7234822c8"
902 | },
903 | {
904 | "type": "Feature",
905 | "properties": {},
906 | "geometry": {
907 | "coordinates": [
908 | -122.430235,
909 | 37.787515
910 | ],
911 | "type": "Point"
912 | },
913 | "id": "bf0488af6f7810e88c732987d23e5fb2"
914 | },
915 | {
916 | "type": "Feature",
917 | "properties": {},
918 | "geometry": {
919 | "coordinates": [
920 | -122.457634,
921 | 37.799707
922 | ],
923 | "type": "Point"
924 | },
925 | "id": "c40899d9a88632a287ff5d7b917b3a05"
926 | },
927 | {
928 | "type": "Feature",
929 | "properties": {},
930 | "geometry": {
931 | "coordinates": [
932 | -122.402395,
933 | 37.794753
934 | ],
935 | "type": "Point"
936 | },
937 | "id": "c9e9f8dfcf5e8c4eb74624b871491ad1"
938 | },
939 | {
940 | "type": "Feature",
941 | "properties": {},
942 | "geometry": {
943 | "coordinates": [
944 | -122.421049,
945 | 37.794245
946 | ],
947 | "type": "Point"
948 | },
949 | "id": "c9f1258681d6488dca20fe880237c5ba"
950 | },
951 | {
952 | "type": "Feature",
953 | "properties": {},
954 | "geometry": {
955 | "coordinates": [
956 | -122.415706,
957 | 37.777029
958 | ],
959 | "type": "Point"
960 | },
961 | "id": "cf321aaf78329cf1f9c20de9fe7df54b"
962 | },
963 | {
964 | "type": "Feature",
965 | "properties": {},
966 | "geometry": {
967 | "coordinates": [
968 | -122.405976,
969 | 37.778507
970 | ],
971 | "type": "Point"
972 | },
973 | "id": "d60cfec51a9ba9fd33879f4e82896318"
974 | },
975 | {
976 | "type": "Feature",
977 | "properties": {},
978 | "geometry": {
979 | "coordinates": [
980 | -122.401889,
981 | 37.786432
982 | ],
983 | "type": "Point"
984 | },
985 | "id": "dbd2b9a1b1581bc18b6bdf324351f091"
986 | },
987 | {
988 | "type": "Feature",
989 | "properties": {},
990 | "geometry": {
991 | "coordinates": [
992 | -122.389695,
993 | 37.783799
994 | ],
995 | "type": "Point"
996 | },
997 | "id": "df4cc31ba66f82870fc448e39188f51f"
998 | },
999 | {
1000 | "type": "Feature",
1001 | "properties": {},
1002 | "geometry": {
1003 | "coordinates": [
1004 | -122.48584,
1005 | 37.761461
1006 | ],
1007 | "type": "Point"
1008 | },
1009 | "id": "e0889958faa0502722078365e8ff10f8"
1010 | },
1011 | {
1012 | "type": "Feature",
1013 | "properties": {},
1014 | "geometry": {
1015 | "coordinates": [
1016 | -122.390647,
1017 | 37.79022
1018 | ],
1019 | "type": "Point"
1020 | },
1021 | "id": "e15464a089656f516aa6585952f54a15"
1022 | },
1023 | {
1024 | "type": "Feature",
1025 | "properties": {},
1026 | "geometry": {
1027 | "coordinates": [
1028 | -122.431465,
1029 | 37.747483
1030 | ],
1031 | "type": "Point"
1032 | },
1033 | "id": "e16e602aa525d626037b39f0a14be9e8"
1034 | },
1035 | {
1036 | "type": "Feature",
1037 | "properties": {},
1038 | "geometry": {
1039 | "coordinates": [
1040 | -122.39675,
1041 | 37.783849
1042 | ],
1043 | "type": "Point"
1044 | },
1045 | "id": "e298ebcfc86442586a1f0c80fc24b085"
1046 | },
1047 | {
1048 | "type": "Feature",
1049 | "properties": {},
1050 | "geometry": {
1051 | "coordinates": [
1052 | -122.452072,
1053 | 37.771251
1054 | ],
1055 | "type": "Point"
1056 | },
1057 | "id": "e5105a8a6237415798ea5a3ec8cb5290"
1058 | },
1059 | {
1060 | "type": "Feature",
1061 | "properties": {},
1062 | "geometry": {
1063 | "coordinates": [
1064 | -122.440678,
1065 | 37.772606
1066 | ],
1067 | "type": "Point"
1068 | },
1069 | "id": "ec28dbdf4c7f11cb8d9e5db2dd887ad5"
1070 | },
1071 | {
1072 | "type": "Feature",
1073 | "properties": {},
1074 | "geometry": {
1075 | "coordinates": [
1076 | -122.408833,
1077 | 37.780789
1078 | ],
1079 | "type": "Point"
1080 | },
1081 | "id": "edcb07f1976fe6ee321399d7ea2da87b"
1082 | },
1083 | {
1084 | "type": "Feature",
1085 | "properties": {},
1086 | "geometry": {
1087 | "coordinates": [
1088 | -122.464362,
1089 | 37.790301
1090 | ],
1091 | "type": "Point"
1092 | },
1093 | "id": "f36c8886945aaec9be073ea6de1eec0a"
1094 | },
1095 | {
1096 | "type": "Feature",
1097 | "properties": {},
1098 | "geometry": {
1099 | "coordinates": [
1100 | -122.399755,
1101 | 37.792653
1102 | ],
1103 | "type": "Point"
1104 | },
1105 | "id": "f538b866ce35759a3d25a94d5830b9d0"
1106 | },
1107 | {
1108 | "type": "Feature",
1109 | "properties": {},
1110 | "geometry": {
1111 | "coordinates": [
1112 | -122.414592,
1113 | 37.8015
1114 | ],
1115 | "type": "Point"
1116 | },
1117 | "id": "f8c183abb07acb2efc9d9c07a9815029"
1118 | },
1119 | {
1120 | "type": "Feature",
1121 | "properties": {},
1122 | "geometry": {
1123 | "coordinates": [
1124 | -122.423218,
1125 | 37.769848
1126 | ],
1127 | "type": "Point"
1128 | },
1129 | "id": "f92bd1df5ff89e55ed7bc76b9eabf5af"
1130 | }
1131 | ],
1132 | "type": "FeatureCollection"
1133 | }
--------------------------------------------------------------------------------
/datasets/bike-neighboorhood-parking-zones.geojson:
--------------------------------------------------------------------------------
1 | {
2 | "features": [
3 | {
4 | "type": "Feature",
5 | "properties": {},
6 | "geometry": {
7 | "coordinates": [
8 | [
9 | [
10 | -122.388959,
11 | 37.789727
12 | ],
13 | [
14 | -122.391753,
15 | 37.787282
16 | ],
17 | [
18 | -122.392932,
19 | 37.788507
20 | ],
21 | [
22 | -122.391226,
23 | 37.78985
24 | ],
25 | [
26 | -122.392401,
27 | 37.790955
28 | ],
29 | [
30 | -122.39289,
31 | 37.790715
32 | ],
33 | [
34 | -122.392362,
35 | 37.790345
36 | ],
37 | [
38 | -122.39275,
39 | 37.790163
40 | ],
41 | [
42 | -122.393453,
43 | 37.790733
44 | ],
45 | [
46 | -122.392524,
47 | 37.791355
48 | ],
49 | [
50 | -122.392272,
51 | 37.791135
52 | ],
53 | [
54 | -122.391494,
55 | 37.791576
56 | ],
57 | [
58 | -122.391959,
59 | 37.791865
60 | ],
61 | [
62 | -122.391329,
63 | 37.792371
64 | ],
65 | [
66 | -122.391106,
67 | 37.791851
68 | ],
69 | [
70 | -122.390971,
71 | 37.791529
72 | ],
73 | [
74 | -122.390871,
75 | 37.791323
76 | ],
77 | [
78 | -122.390762,
79 | 37.791221
80 | ],
81 | [
82 | -122.390575,
83 | 37.791005
84 | ],
85 | [
86 | -122.388959,
87 | 37.789727
88 | ]
89 | ]
90 | ],
91 | "type": "Polygon"
92 | },
93 | "id": "0fa1aaabd043282998de39b82960da2e"
94 | },
95 | {
96 | "type": "Feature",
97 | "properties": {},
98 | "geometry": {
99 | "coordinates": [
100 | [
101 | [
102 | -122.475009,
103 | 37.763777
104 | ],
105 | [
106 | -122.46108,
107 | 37.764369
108 | ],
109 | [
110 | -122.460892,
111 | 37.762628
112 | ],
113 | [
114 | -122.462847,
115 | 37.762228
116 | ],
117 | [
118 | -122.462865,
119 | 37.760459
120 | ],
121 | [
122 | -122.47478,
123 | 37.759798
124 | ],
125 | [
126 | -122.474875,
127 | 37.761762
128 | ],
129 | [
130 | -122.475009,
131 | 37.763777
132 | ]
133 | ]
134 | ],
135 | "type": "Polygon"
136 | },
137 | "id": "140a1c44a4b4695db9b3d985a1278b28"
138 | },
139 | {
140 | "type": "Feature",
141 | "properties": {},
142 | "geometry": {
143 | "coordinates": [
144 | [
145 | [
146 | -122.406914,
147 | 37.791417
148 | ],
149 | [
150 | -122.407356,
151 | 37.793773
152 | ],
153 | [
154 | -122.407821,
155 | 37.793735
156 | ],
157 | [
158 | -122.408436,
159 | 37.796828
160 | ],
161 | [
162 | -122.423115,
163 | 37.794923
164 | ],
165 | [
166 | -122.422115,
167 | 37.790059
168 | ],
169 | [
170 | -122.418519,
171 | 37.790536
172 | ],
173 | [
174 | -122.418691,
175 | 37.791234
176 | ],
177 | [
178 | -122.416087,
179 | 37.791541
180 | ],
181 | [
182 | -122.415893,
183 | 37.790853
184 | ],
185 | [
186 | -122.41534,
187 | 37.79093
188 | ],
189 | [
190 | -122.415543,
191 | 37.791599
192 | ],
193 | [
194 | -122.407927,
195 | 37.792576
196 | ],
197 | [
198 | -122.407667,
199 | 37.791325
200 | ],
201 | [
202 | -122.406914,
203 | 37.791417
204 | ]
205 | ]
206 | ],
207 | "type": "Polygon"
208 | },
209 | "id": "1ed9c6eb026396186389bf7657da58b1"
210 | },
211 | {
212 | "type": "Feature",
213 | "properties": {},
214 | "geometry": {
215 | "coordinates": [
216 | [
217 | [
218 | -122.404154,
219 | 37.784493
220 | ],
221 | [
222 | -122.415798,
223 | 37.775307
224 | ],
225 | [
226 | -122.41139,
227 | 37.771682
228 | ],
229 | [
230 | -122.408436,
231 | 37.773781
232 | ],
233 | [
234 | -122.406905,
235 | 37.775035
236 | ],
237 | [
238 | -122.408418,
239 | 37.776281
240 | ],
241 | [
242 | -122.406438,
243 | 37.777861
244 | ],
245 | [
246 | -122.404997,
247 | 37.776664
248 | ],
249 | [
250 | -122.395087,
251 | 37.784315
252 | ],
253 | [
254 | -122.396637,
255 | 37.78556
256 | ],
257 | [
258 | -122.397822,
259 | 37.78468
260 | ],
261 | [
262 | -122.399316,
263 | 37.785929
264 | ],
265 | [
266 | -122.398187,
267 | 37.786804
268 | ],
269 | [
270 | -122.399709,
271 | 37.788051
272 | ],
273 | [
274 | -122.404154,
275 | 37.784493
276 | ]
277 | ]
278 | ],
279 | "type": "Polygon"
280 | },
281 | "id": "30374a00f540dbb44d1d804af0bc9c5a"
282 | },
283 | {
284 | "type": "Feature",
285 | "properties": {},
286 | "geometry": {
287 | "coordinates": [
288 | [
289 | [
290 | -122.405573,
291 | 37.792375
292 | ],
293 | [
294 | -122.405421,
295 | 37.7917
296 | ],
297 | [
298 | -122.404778,
299 | 37.791771
300 | ],
301 | [
302 | -122.404823,
303 | 37.792152
304 | ],
305 | [
306 | -122.404917,
307 | 37.792162
308 | ],
309 | [
310 | -122.404952,
311 | 37.792453
312 | ],
313 | [
314 | -122.405573,
315 | 37.792375
316 | ]
317 | ]
318 | ],
319 | "type": "Polygon"
320 | },
321 | "id": "42c78bf1b126a9e5d0283daa7bf2b683"
322 | },
323 | {
324 | "type": "Feature",
325 | "properties": {},
326 | "geometry": {
327 | "coordinates": [
328 | [
329 | [
330 | -122.479498,
331 | 37.780452
332 | ],
333 | [
334 | -122.490229,
335 | 37.779856
336 | ],
337 | [
338 | -122.489769,
339 | 37.77439
340 | ],
341 | [
342 | -122.492855,
343 | 37.774164
344 | ],
345 | [
346 | -122.492785,
347 | 37.772529
348 | ],
349 | [
350 | -122.487476,
351 | 37.772533
352 | ],
353 | [
354 | -122.487695,
355 | 37.774398
356 | ],
357 | [
358 | -122.485258,
359 | 37.774433
360 | ],
361 | [
362 | -122.485614,
363 | 37.777976
364 | ],
365 | [
366 | -122.482353,
367 | 37.778264
368 | ],
369 | [
370 | -122.482106,
371 | 37.774616
372 | ],
373 | [
374 | -122.47907,
375 | 37.774743
376 | ],
377 | [
378 | -122.479498,
379 | 37.780452
380 | ]
381 | ]
382 | ],
383 | "type": "Polygon"
384 | },
385 | "id": "4541660ab2e4dc08e174fddb5bd3862e"
386 | },
387 | {
388 | "type": "Feature",
389 | "properties": {},
390 | "geometry": {
391 | "coordinates": [
392 | [
393 | [
394 | -122.461216,
395 | 37.784834
396 | ],
397 | [
398 | -122.460603,
399 | 37.775474
400 | ],
401 | [
402 | -122.478162,
403 | 37.77481
404 | ],
405 | [
406 | -122.478764,
407 | 37.784075
408 | ],
409 | [
410 | -122.461216,
411 | 37.784834
412 | ]
413 | ]
414 | ],
415 | "type": "Polygon"
416 | },
417 | "id": "4c0fab620b658399f4a6f455680ed914"
418 | },
419 | {
420 | "type": "Feature",
421 | "properties": {},
422 | "geometry": {
423 | "coordinates": [
424 | [
425 | [
426 | -122.391714,
427 | 37.777993
428 | ],
429 | [
430 | -122.393783,
431 | 37.776327
432 | ],
433 | [
434 | -122.393247,
435 | 37.775872
436 | ],
437 | [
438 | -122.391141,
439 | 37.777521
440 | ],
441 | [
442 | -122.391714,
443 | 37.777993
444 | ]
445 | ]
446 | ],
447 | "type": "Polygon"
448 | },
449 | "id": "56f1e90f81bc93df54e1f67f9903ccc5"
450 | },
451 | {
452 | "type": "Feature",
453 | "properties": {},
454 | "geometry": {
455 | "coordinates": [
456 | [
457 | [
458 | -122.428326,
459 | 37.803627
460 | ],
461 | [
462 | -122.426801,
463 | 37.795472
464 | ],
465 | [
466 | -122.423347,
467 | 37.795753
468 | ],
469 | [
470 | -122.421844,
471 | 37.795968
472 | ],
473 | [
474 | -122.421945,
475 | 37.796827
476 | ],
477 | [
478 | -122.41868,
479 | 37.797303
480 | ],
481 | [
482 | -122.420719,
483 | 37.807572
484 | ],
485 | [
486 | -122.422551,
487 | 37.807332
488 | ],
489 | [
490 | -122.425485,
491 | 37.806303
492 | ],
493 | [
494 | -122.425139,
495 | 37.804203
496 | ],
497 | [
498 | -122.428326,
499 | 37.803627
500 | ]
501 | ]
502 | ],
503 | "type": "Polygon"
504 | },
505 | "id": "6d5f98cc7ba03551c83fb9fdbe721a60"
506 | },
507 | {
508 | "type": "Feature",
509 | "properties": {},
510 | "geometry": {
511 | "coordinates": [
512 | [
513 | [
514 | -122.431107,
515 | 37.800509
516 | ],
517 | [
518 | -122.430656,
519 | 37.79811
520 | ],
521 | [
522 | -122.430443,
523 | 37.79666
524 | ],
525 | [
526 | -122.431759,
527 | 37.795664
528 | ],
529 | [
530 | -122.431539,
531 | 37.794514
532 | ],
533 | [
534 | -122.439708,
535 | 37.793347
536 | ],
537 | [
538 | -122.440472,
539 | 37.797689
540 | ],
541 | [
542 | -122.442369,
543 | 37.797084
544 | ],
545 | [
546 | -122.442173,
547 | 37.795419
548 | ],
549 | [
550 | -122.44713,
551 | 37.794719
552 | ],
553 | [
554 | -122.44775,
555 | 37.801534
556 | ],
557 | [
558 | -122.444806,
559 | 37.801798
560 | ],
561 | [
562 | -122.445563,
563 | 37.804621
564 | ],
565 | [
566 | -122.444028,
567 | 37.805501
568 | ],
569 | [
570 | -122.443545,
571 | 37.802946
572 | ],
573 | [
574 | -122.441564,
575 | 37.80314
576 | ],
577 | [
578 | -122.441894,
579 | 37.803883
580 | ],
581 | [
582 | -122.439552,
583 | 37.804103
584 | ],
585 | [
586 | -122.437391,
587 | 37.80431
588 | ],
589 | [
590 | -122.437478,
591 | 37.806078
592 | ],
593 | [
594 | -122.436571,
595 | 37.806625
596 | ],
597 | [
598 | -122.435689,
599 | 37.806354
600 | ],
601 | [
602 | -122.43354,
603 | 37.805121
604 | ],
605 | [
606 | -122.432024,
607 | 37.805136
608 | ],
609 | [
610 | -122.431107,
611 | 37.800509
612 | ]
613 | ]
614 | ],
615 | "type": "Polygon"
616 | },
617 | "id": "850fb6f438ad32e330f275b74f68118f"
618 | },
619 | {
620 | "type": "Feature",
621 | "properties": {},
622 | "geometry": {
623 | "coordinates": [
624 | [
625 | [
626 | -122.390045,
627 | 37.774399
628 | ],
629 | [
630 | -122.39373,
631 | 37.772662
632 | ],
633 | [
634 | -122.395012,
635 | 37.770691
636 | ],
637 | [
638 | -122.39491,
639 | 37.769823
640 | ],
641 | [
642 | -122.389586,
643 | 37.770108
644 | ],
645 | [
646 | -122.390045,
647 | 37.774399
648 | ]
649 | ]
650 | ],
651 | "type": "Polygon"
652 | },
653 | "id": "87ca4598aa77085fa1014dc0d9fdc966"
654 | },
655 | {
656 | "type": "Feature",
657 | "properties": {},
658 | "geometry": {
659 | "coordinates": [
660 | [
661 | [
662 | -122.395434,
663 | 37.793638
664 | ],
665 | [
666 | -122.396291,
667 | 37.793015
668 | ],
669 | [
670 | -122.395523,
671 | 37.792359
672 | ],
673 | [
674 | -122.394636,
675 | 37.792966
676 | ],
677 | [
678 | -122.395434,
679 | 37.793638
680 | ]
681 | ]
682 | ],
683 | "type": "Polygon"
684 | },
685 | "id": "ac919d0b310c0629b74cbbdc1f47a9a4"
686 | },
687 | {
688 | "type": "Feature",
689 | "properties": {},
690 | "geometry": {
691 | "coordinates": [
692 | [
693 | [
694 | -122.394968,
695 | 37.777088
696 | ],
697 | [
698 | -122.398092,
699 | 37.779581
700 | ],
701 | [
702 | -122.400272,
703 | 37.77784
704 | ],
705 | [
706 | -122.397255,
707 | 37.77533
708 | ],
709 | [
710 | -122.394968,
711 | 37.777088
712 | ]
713 | ]
714 | ],
715 | "type": "Polygon"
716 | },
717 | "id": "c514085cdbaf6c50862fe801e9fa91d6"
718 | },
719 | {
720 | "type": "Feature",
721 | "properties": {},
722 | "geometry": {
723 | "coordinates": [
724 | [
725 | [
726 | -122.418727,
727 | 37.806016
728 | ],
729 | [
730 | -122.417719,
731 | 37.799961
732 | ],
733 | [
734 | -122.412385,
735 | 37.800852
736 | ],
737 | [
738 | -122.412295,
739 | 37.799726
740 | ],
741 | [
742 | -122.41232,
743 | 37.799225
744 | ],
745 | [
746 | -122.409079,
747 | 37.799629
748 | ],
749 | [
750 | -122.41049,
751 | 37.806955
752 | ],
753 | [
754 | -122.418727,
755 | 37.806016
756 | ]
757 | ]
758 | ],
759 | "type": "Polygon"
760 | },
761 | "id": "d66168a6d7fe6be61324ba527e4be3ca"
762 | },
763 | {
764 | "type": "Feature",
765 | "properties": {},
766 | "geometry": {
767 | "coordinates": [
768 | [
769 | [
770 | -122.457275,
771 | 37.788624
772 | ],
773 | [
774 | -122.439442,
775 | 37.790943
776 | ],
777 | [
778 | -122.439632,
779 | 37.792558
780 | ],
781 | [
782 | -122.429834,
783 | 37.793937
784 | ],
785 | [
786 | -122.426608,
787 | 37.778198
788 | ],
789 | [
790 | -122.425855,
791 | 37.774724
792 | ],
793 | [
794 | -122.429331,
795 | 37.774236
796 | ],
797 | [
798 | -122.428467,
799 | 37.770653
800 | ],
801 | [
802 | -122.431681,
803 | 37.770029
804 | ],
805 | [
806 | -122.43183,
807 | 37.770872
808 | ],
809 | [
810 | -122.438388,
811 | 37.770312
812 | ],
813 | [
814 | -122.438677,
815 | 37.771105
816 | ],
817 | [
818 | -122.445452,
819 | 37.770297
820 | ],
821 | [
822 | -122.444781,
823 | 37.767515
824 | ],
825 | [
826 | -122.452957,
827 | 37.766526
828 | ],
829 | [
830 | -122.457275,
831 | 37.788624
832 | ]
833 | ]
834 | ],
835 | "type": "Polygon"
836 | },
837 | "id": "dde2781c8488da8f5ea1ab2d900d50e7"
838 | },
839 | {
840 | "type": "Feature",
841 | "properties": {},
842 | "geometry": {
843 | "coordinates": [
844 | [
845 | [
846 | -122.489957,
847 | 37.762984
848 | ],
849 | [
850 | -122.489611,
851 | 37.75561
852 | ],
853 | [
854 | -122.477658,
855 | 37.756025
856 | ],
857 | [
858 | -122.478048,
859 | 37.763499
860 | ],
861 | [
862 | -122.489957,
863 | 37.762984
864 | ]
865 | ]
866 | ],
867 | "type": "Polygon"
868 | },
869 | "id": "decbc7c782a1ce37b11a153f2bbd8abe"
870 | },
871 | {
872 | "type": "Feature",
873 | "properties": {},
874 | "geometry": {
875 | "coordinates": [
876 | [
877 | [
878 | -122.400957,
879 | 37.788907
880 | ],
881 | [
882 | -122.401628,
883 | 37.788395
884 | ],
885 | [
886 | -122.400877,
887 | 37.787794
888 | ],
889 | [
890 | -122.400234,
891 | 37.788329
892 | ],
893 | [
894 | -122.400957,
895 | 37.788907
896 | ]
897 | ]
898 | ],
899 | "type": "Polygon"
900 | },
901 | "id": "e0dc5a92399ff234f685a9619be275e8"
902 | },
903 | {
904 | "type": "Feature",
905 | "properties": {},
906 | "geometry": {
907 | "coordinates": [
908 | [
909 | [
910 | -122.403436,
911 | 37.763412
912 | ],
913 | [
914 | -122.403304,
915 | 37.762289
916 | ],
917 | [
918 | -122.393548,
919 | 37.762766
920 | ],
921 | [
922 | -122.393718,
923 | 37.764023
924 | ],
925 | [
926 | -122.403436,
927 | 37.763412
928 | ]
929 | ]
930 | ],
931 | "type": "Polygon"
932 | },
933 | "id": "e271a31ffb6849f4cd424de2670a4e28"
934 | },
935 | {
936 | "type": "Feature",
937 | "properties": {},
938 | "geometry": {
939 | "coordinates": [
940 | [
941 | [
942 | -122.426605,
943 | 37.769114
944 | ],
945 | [
946 | -122.435156,
947 | 37.762536
948 | ],
949 | [
950 | -122.435087,
951 | 37.760929
952 | ],
953 | [
954 | -122.4393,
955 | 37.760549
956 | ],
957 | [
958 | -122.439086,
959 | 37.757459
960 | ],
961 | [
962 | -122.438049,
963 | 37.757559
964 | ],
965 | [
966 | -122.437702,
967 | 37.75436
968 | ],
969 | [
970 | -122.437473,
971 | 37.75267
972 | ],
973 | [
974 | -122.440814,
975 | 37.75252
976 | ],
977 | [
978 | -122.440327,
979 | 37.749402
980 | ],
981 | [
982 | -122.436208,
983 | 37.749563
984 | ],
985 | [
986 | -122.435663,
987 | 37.744672
988 | ],
989 | [
990 | -122.42885,
991 | 37.745126
992 | ],
993 | [
994 | -122.429194,
995 | 37.748301
996 | ],
997 | [
998 | -122.431553,
999 | 37.748222
1000 | ],
1001 | [
1002 | -122.43172,
1003 | 37.749893
1004 | ],
1005 | [
1006 | -122.424866,
1007 | 37.750255
1008 | ],
1009 | [
1010 | -122.424483,
1011 | 37.74547
1012 | ],
1013 | [
1014 | -122.422238,
1015 | 37.745754
1016 | ],
1017 | [
1018 | -122.422455,
1019 | 37.748109
1020 | ],
1021 | [
1022 | -122.418206,
1023 | 37.748184
1024 | ],
1025 | [
1026 | -122.418291,
1027 | 37.750691
1028 | ],
1029 | [
1030 | -122.420586,
1031 | 37.75057
1032 | ],
1033 | [
1034 | -122.420775,
1035 | 37.753709
1036 | ],
1037 | [
1038 | -122.418588,
1039 | 37.753727
1040 | ],
1041 | [
1042 | -122.41538,
1043 | 37.753963
1044 | ],
1045 | [
1046 | -122.414809,
1047 | 37.748461
1048 | ],
1049 | [
1050 | -122.407939,
1051 | 37.748357
1052 | ],
1053 | [
1054 | -122.408225,
1055 | 37.751443
1056 | ],
1057 | [
1058 | -122.406315,
1059 | 37.751584
1060 | ],
1061 | [
1062 | -122.407658,
1063 | 37.768239
1064 | ],
1065 | [
1066 | -122.410666,
1067 | 37.768261
1068 | ],
1069 | [
1070 | -122.410849,
1071 | 37.769161
1072 | ],
1073 | [
1074 | -122.412569,
1075 | 37.76806
1076 | ],
1077 | [
1078 | -122.413486,
1079 | 37.767993
1080 | ],
1081 | [
1082 | -122.413495,
1083 | 37.768723
1084 | ],
1085 | [
1086 | -122.41999,
1087 | 37.76819
1088 | ],
1089 | [
1090 | -122.422212,
1091 | 37.768156
1092 | ],
1093 | [
1094 | -122.422318,
1095 | 37.769259
1096 | ],
1097 | [
1098 | -122.426605,
1099 | 37.769114
1100 | ]
1101 | ]
1102 | ],
1103 | "type": "Polygon"
1104 | },
1105 | "id": "e334711894ad651e584dfca9885b231b"
1106 | },
1107 | {
1108 | "type": "Feature",
1109 | "properties": {},
1110 | "geometry": {
1111 | "coordinates": [
1112 | [
1113 | [
1114 | -122.389976,
1115 | 37.783623
1116 | ],
1117 | [
1118 | -122.394286,
1119 | 37.780097
1120 | ],
1121 | [
1122 | -122.392849,
1123 | 37.77886
1124 | ],
1125 | [
1126 | -122.38963,
1127 | 37.781314
1128 | ],
1129 | [
1130 | -122.38892,
1131 | 37.781863
1132 | ],
1133 | [
1134 | -122.388284,
1135 | 37.781793
1136 | ],
1137 | [
1138 | -122.387852,
1139 | 37.784713
1140 | ],
1141 | [
1142 | -122.388408,
1143 | 37.78473
1144 | ],
1145 | [
1146 | -122.389976,
1147 | 37.783623
1148 | ]
1149 | ]
1150 | ],
1151 | "type": "Polygon"
1152 | },
1153 | "id": "f19deecd756b71e44eac316046b0de6d"
1154 | }
1155 | ],
1156 | "type": "FeatureCollection"
1157 | }
--------------------------------------------------------------------------------