Skip to content

Commit b094ef7

Browse files
author
Cameron
committed
turf distance example added
1 parent af83f67 commit b094ef7

6 files changed

Lines changed: 246 additions & 4 deletions

File tree

libandroid/app/src/main/AndroidManifest.xml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,22 @@
7272
android:theme="@style/AppTheme.NoActionBar" />
7373
<activity
7474
android:name=".utils.MapMatchingActivity"
75-
android:label="Map Matching"
75+
android:label="Map matching"
7676
android:parentActivityName=".MainActivity"
7777
android:theme="@style/AppTheme.NoActionBar" />
7878
<activity
7979
android:name=".turf.TurfBearingActivity"
80-
android:label="Turf Bearing"
80+
android:label="Turf bearing"
8181
android:parentActivityName=".MainActivity"
8282
android:theme="@style/AppTheme.NoActionBar" />
8383
<activity
8484
android:name=".turf.TurfDestinationActivity"
85-
android:label="Turf Destination"
85+
android:label="Turf destination"
86+
android:parentActivityName=".MainActivity"
87+
android:theme="@style/AppTheme.NoActionBar" />
88+
<activity
89+
android:name=".turf.TurfDistanceActivity"
90+
android:label="Turf distance"
8691
android:parentActivityName=".MainActivity"
8792
android:theme="@style/AppTheme.NoActionBar" />
8893

libandroid/app/src/main/java/com/mapbox/services/android/testapp/MainActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.mapbox.services.android.testapp.icons.DirectionsIconsActivity;
2222
import com.mapbox.services.android.testapp.icons.MakiIconsActivity;
2323
import com.mapbox.services.android.testapp.staticimage.StaticImageActivity;
24+
import com.mapbox.services.android.testapp.turf.TurfDistanceActivity;
2425
import com.mapbox.services.android.testapp.utils.MapMatchingActivity;
2526
import com.mapbox.services.android.testapp.utils.SimplifyPolylineActivity;
2627
import com.mapbox.services.android.testapp.turf.TurfBearingActivity;
@@ -55,7 +56,8 @@ public class MainActivity extends AppCompatActivity {
5556
new SampleItem("Simplify polyline", "", SimplifyPolylineActivity.class),
5657
new SampleItem("Map matching", "", MapMatchingActivity.class),
5758
new SampleItem("Turf bearing", "", TurfBearingActivity.class),
58-
new SampleItem("Turf destination", "", TurfDestinationActivity.class)
59+
new SampleItem("Turf destination", "", TurfDestinationActivity.class),
60+
new SampleItem("Turf distance", "", TurfDistanceActivity.class)
5961
));
6062

6163
@Override
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,161 @@
11
package com.mapbox.services.android.testapp.turf;
22

3+
import android.os.Bundle;
4+
import android.support.annotation.NonNull;
5+
import android.support.design.widget.Snackbar;
36
import android.support.v7.app.AppCompatActivity;
7+
import android.support.v7.widget.Toolbar;
8+
import android.view.Menu;
9+
import android.view.MenuItem;
10+
import android.view.View;
11+
12+
import com.mapbox.mapboxsdk.annotations.Marker;
13+
import com.mapbox.mapboxsdk.annotations.MarkerViewOptions;
14+
import com.mapbox.mapboxsdk.geometry.LatLng;
15+
import com.mapbox.mapboxsdk.maps.MapView;
16+
import com.mapbox.mapboxsdk.maps.MapboxMap;
17+
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
18+
import com.mapbox.services.android.testapp.R;
19+
import com.mapbox.services.android.testapp.Utils;
20+
import com.mapbox.services.commons.geojson.Point;
21+
import com.mapbox.services.commons.models.Position;
22+
import com.mapbox.services.commons.turf.TurfConstants;
23+
import com.mapbox.services.commons.turf.TurfException;
24+
import com.mapbox.services.commons.turf.TurfMeasurement;
425

526
public class TurfDistanceActivity extends AppCompatActivity {
627

28+
private MapView mapView;
29+
private MapboxMap map;
30+
private Marker distanceMarker;
31+
32+
private Position cadillacHotelPosition = Position.fromCoordinates(-118.479852, 33.993898);
33+
private String units = TurfConstants.UNIT_MILES;
34+
35+
private View container;
36+
37+
@Override
38+
protected void onCreate(Bundle savedInstanceState) {
39+
super.onCreate(savedInstanceState);
40+
setContentView(R.layout.activity_turf_distance);
41+
42+
43+
container = findViewById(R.id.turf_distance_map_container);
44+
45+
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
46+
setSupportActionBar(toolbar);
47+
48+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
49+
50+
51+
mapView = (MapView) findViewById(R.id.mapView);
52+
mapView.setAccessToken(Utils.getMapboxAccessToken(this));
53+
mapView.onCreate(savedInstanceState);
54+
mapView.getMapAsync(new OnMapReadyCallback() {
55+
@Override
56+
public void onMapReady(MapboxMap mapboxMap) {
57+
58+
map = mapboxMap;
59+
60+
distance();
61+
}
62+
});
63+
}
64+
65+
@Override
66+
public void onResume() {
67+
super.onResume();
68+
mapView.onResume();
69+
}
70+
71+
@Override
72+
public void onPause() {
73+
super.onPause();
74+
mapView.onPause();
75+
}
76+
77+
@Override
78+
public void onLowMemory() {
79+
super.onLowMemory();
80+
mapView.onLowMemory();
81+
}
82+
83+
@Override
84+
protected void onDestroy() {
85+
super.onDestroy();
86+
mapView.onDestroy();
87+
}
88+
89+
@Override
90+
protected void onSaveInstanceState(Bundle outState) {
91+
super.onSaveInstanceState(outState);
92+
mapView.onSaveInstanceState(outState);
93+
}
94+
95+
@Override
96+
public boolean onCreateOptionsMenu(Menu menu) {
97+
getMenuInflater().inflate(R.menu.menu_turf_units, menu);
98+
return super.onCreateOptionsMenu(menu);
99+
}
100+
101+
@Override
102+
public boolean onOptionsItemSelected(MenuItem item) {
103+
switch (item.getItemId()) {
104+
case R.id.action_miles:
105+
units = TurfConstants.UNIT_MILES;
106+
return true;
107+
case R.id.action_nauticalmiles:
108+
units = TurfConstants.UNIT_NAUTICAL_MILES;
109+
return true;
110+
case R.id.action_kilometers:
111+
units = TurfConstants.UNIT_KILOMETERS;
112+
return true;
113+
case R.id.action_radians:
114+
units = TurfConstants.UNIT_RADIANS;
115+
return true;
116+
case R.id.action_degrees:
117+
units = TurfConstants.UNIT_DEGREES;
118+
return true;
119+
case R.id.action_inches:
120+
units = TurfConstants.UNIT_INCHES;
121+
return true;
122+
case R.id.action_yards:
123+
units = TurfConstants.UNIT_YARDS;
124+
return true;
125+
case R.id.action_meters:
126+
units = TurfConstants.UNIT_METERS;
127+
return true;
128+
default:
129+
return super.onOptionsItemSelected(item);
130+
}
131+
132+
}
133+
134+
private void distance() {
135+
136+
map.addMarker(new MarkerViewOptions()
137+
.position(new LatLng(cadillacHotelPosition.getLatitude(), cadillacHotelPosition.getLongitude()))
138+
.title("point 1"));
139+
140+
Snackbar.make(container, "Click map anywhere to calculate distance", Snackbar.LENGTH_INDEFINITE).show();
141+
142+
map.setOnMapClickListener(new MapboxMap.OnMapClickListener() {
143+
@Override
144+
public void onMapClick(@NonNull LatLng point) {
145+
if (distanceMarker != null) map.removeMarker(distanceMarker);
146+
147+
distanceMarker = map.addMarker(new MarkerViewOptions()
148+
.position(point)
149+
.title("point 2"));
150+
151+
double distance = 0;
152+
try {
153+
distance = TurfMeasurement.distance(Point.fromCoordinates(cadillacHotelPosition), Point.fromCoordinates(Position.fromCoordinates(point.getLongitude(), point.getLatitude())), units);
154+
} catch (TurfException e) {
155+
e.printStackTrace();
156+
}
157+
Snackbar.make(container, "Distance = " + distance + " " + units, Snackbar.LENGTH_INDEFINITE).show();
158+
}
159+
});
160+
}
7161
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
android:fitsSystemWindows="true"
8+
tools:context=".turf.TurfDistanceActivity">
9+
10+
<android.support.design.widget.AppBarLayout
11+
android:layout_width="match_parent"
12+
android:layout_height="wrap_content"
13+
android:theme="@style/AppTheme.AppBarOverlay">
14+
15+
<android.support.v7.widget.Toolbar
16+
android:id="@+id/toolbar"
17+
android:layout_width="match_parent"
18+
android:layout_height="?attr/actionBarSize"
19+
android:background="?attr/colorPrimary"
20+
app:popupTheme="@style/AppTheme.PopupOverlay" />
21+
22+
</android.support.design.widget.AppBarLayout>
23+
24+
<include layout="@layout/content_turf_distance" />
25+
26+
</android.support.design.widget.CoordinatorLayout>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
tools:context=".turf.TurfDestinationActivity"
8+
android:id="@+id/turf_distance_map_container">
9+
10+
<com.mapbox.mapboxsdk.maps.MapView
11+
android:id="@+id/mapView"
12+
android:layout_width="match_parent"
13+
android:layout_height="match_parent"
14+
app:center_latitude="33.991986"
15+
app:center_longitude="-118.475743"
16+
app:style_url="mapbox://styles/mapbox/streets-v9"
17+
app:zoom="14.5" />
18+
19+
</LinearLayout>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:mapbox="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/action_miles"
6+
android:title="Miles"
7+
mapbox:showAsAction="never" />
8+
<item
9+
android:id="@+id/action_nauticalmiles"
10+
android:title="Nautical miles"
11+
mapbox:showAsAction="never" />
12+
<item
13+
android:id="@+id/action_kilometers"
14+
android:title="Kilometers"
15+
mapbox:showAsAction="never" />
16+
<item
17+
android:id="@+id/action_radians"
18+
android:title="Radians"
19+
mapbox:showAsAction="never" />
20+
<item
21+
android:id="@+id/action_degrees"
22+
android:title="Degrees"
23+
mapbox:showAsAction="never" />
24+
<item
25+
android:id="@+id/action_inches"
26+
android:title="Inches"
27+
mapbox:showAsAction="never" />
28+
<item
29+
android:id="@+id/action_yards"
30+
android:title="Yards"
31+
mapbox:showAsAction="never" />
32+
<item
33+
android:id="@+id/action_meters"
34+
android:title="Meters"
35+
mapbox:showAsAction="never" />
36+
</menu>

0 commit comments

Comments
 (0)