Skip to content

Commit 08cad42

Browse files
JennyVaylaCameron Mace
authored andcommitted
Jenny directionsapi 368 (#428)
* Added Markers as overlays on the static image map * cleaned up manifest file * allow for position instead of lat lon * added auto and before-layer options * cleaned up testapp example, marker object, and static image api * added polyline * added custom marker support and many test * added polyline test * added new exceptions and javadoc * added missing javadoc to static image class * finished up javadoc for marker * fixed failing test * added support for geojson annotations * fixed checkstyle * made suggested changes * fixed ci * fixed checkstyle issues * added new textUtils method * fixed checkstyle
1 parent 66d9087 commit 08cad42

16 files changed

Lines changed: 1197 additions & 25 deletions

File tree

mapbox/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242
compile rootProject.ext.dep.supportAppcompat
4343
compile rootProject.ext.dep.supportDesign
4444
compile rootProject.ext.dep.supportRecyclerview
45+
compile rootProject.ext.dep.supportCardView
4546

4647
// Mapbox SDK
4748
compile(rootProject.ext.dep.mapbox) {

mapbox/app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@
134134
android:name="android.support.PARENT_ACTIVITY"
135135
android:value=".MainActivity"/>
136136
</activity>
137+
<activity
138+
android:name=".staticimage.StaticImageWithAnnotationsActivity"
139+
android:label="@string/title_static_image_with_annotations">
140+
<meta-data
141+
android:name="android.support.PARENT_ACTIVITY"
142+
android:value=".MainActivity"/>
143+
</activity>
137144
<activity
138145
android:name=".optimizedtrip.OptimizedTripActivity"
139146
android:label="@string/title_optimized_trip">

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.mapbox.services.android.testapp.optimizedtrip.OptimizedTripActivity;
2525

2626
import com.mapbox.services.android.testapp.staticimage.StaticImageActivity;
27+
import com.mapbox.services.android.testapp.staticimage.StaticImageWithAnnotationsActivity;
2728
import com.mapbox.services.android.testapp.turf.TurfBearingActivity;
2829
import com.mapbox.services.android.testapp.turf.TurfDestinationActivity;
2930
import com.mapbox.services.android.testapp.turf.TurfDistanceActivity;
@@ -88,6 +89,11 @@ protected void onCreate(Bundle savedInstanceState) {
8889
getString(R.string.description_static_image),
8990
StaticImageActivity.class
9091
),
92+
new SampleItem(
93+
getString(R.string.title_static_image_with_annotations),
94+
getString(R.string.description_static_image_with_annotations),
95+
StaticImageWithAnnotationsActivity.class
96+
),
9197
new SampleItem(
9298
getString(R.string.title_simplify_polyline),
9399
getString(R.string.description_simplify_polyline),

mapbox/app/src/main/java/com/mapbox/services/android/testapp/staticimage/GalleryAdapter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
4646
public void onBindViewHolder(ViewHolder holder, int position) {
4747
Picasso.with(context)
4848
.load(dataset[position])
49+
.fit()
50+
.centerCrop()
4951
.placeholder(R.drawable.mapbox)
5052
.error(R.drawable.mapbox_error)
5153
.into(holder.imageView);
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.mapbox.services.android.testapp.staticimage;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.AppCompatActivity;
5+
import android.widget.ImageView;
6+
7+
import com.mapbox.mapboxsdk.Mapbox;
8+
import com.mapbox.services.Constants;
9+
import com.mapbox.services.android.testapp.R;
10+
import com.mapbox.services.api.staticimage.v1.MapboxStaticImage;
11+
import com.mapbox.services.api.staticimage.v1.models.StaticMarkerAnnotation;
12+
import com.mapbox.services.api.staticimage.v1.models.StaticPolylineAnnotation;
13+
import com.mapbox.services.commons.geojson.Feature;
14+
import com.mapbox.services.commons.geojson.Point;
15+
import com.mapbox.services.commons.models.Position;
16+
import com.squareup.picasso.Picasso;
17+
18+
public class StaticImageWithAnnotationsActivity extends AppCompatActivity {
19+
20+
@Override
21+
protected void onCreate(Bundle savedInstanceState) {
22+
super.onCreate(savedInstanceState);
23+
setContentView(R.layout.activity_static_image_annotations);
24+
25+
ImageView veniceImageView = (ImageView) findViewById(R.id.veniceImageView);
26+
ImageView parisImageView = (ImageView) findViewById(R.id.parisImageView);
27+
ImageView londonImageView = (ImageView) findViewById(R.id.londonImageView);
28+
29+
StaticMarkerAnnotation firstStaticMarkerAnnotation = new StaticMarkerAnnotation.Builder()
30+
.setName(Constants.PIN_SMALL)
31+
.setPosition(Position.fromCoordinates(-122.46589, 37.77343))
32+
.setColor("9ed4bd")
33+
.setLabel("a")
34+
.build();
35+
36+
StaticMarkerAnnotation secondStaticMarkerAnnotation = new StaticMarkerAnnotation.Builder()
37+
.setName(Constants.PIN_SMALL)
38+
.setPosition(Position.fromCoordinates(-122.42816, 37.75965))
39+
.setColor("000")
40+
.setLabel("b")
41+
.build();
42+
43+
StaticPolylineAnnotation staticPolylineAnnotation = new StaticPolylineAnnotation.Builder()
44+
.setPolyline("%7DrpeFxbnjVsFwdAvr@cHgFor@jEmAlFmEMwM_FuItCkOi@wc@bg@wBSgM")
45+
.setStrokeOpacity(0.5f)
46+
.setStrokeColor("f44")
47+
.setStrokeWidth(5)
48+
.build();
49+
50+
MapboxStaticImage veniceStaticImage = new MapboxStaticImage.Builder()
51+
.setAccessToken(Mapbox.getAccessToken())
52+
.setStyleId("streets-v10")
53+
.setStaticMarkerAnnotations(firstStaticMarkerAnnotation, secondStaticMarkerAnnotation)
54+
.setStaticPolylineAnnotations(staticPolylineAnnotation)
55+
.setAuto(true)
56+
.setWidth(320)
57+
.setHeight(320)
58+
.setRetina(true)
59+
.build();
60+
61+
Picasso.with(this).load(veniceStaticImage.getUrl().toString()).into(veniceImageView);
62+
63+
StaticMarkerAnnotation customStaticMarkerAnnotation = new StaticMarkerAnnotation.Builder()
64+
.setUrl("https://www.mapbox.com/img/rocket.png")
65+
.setPosition(Position.fromCoordinates(2.29450, 48.85826))
66+
.build();
67+
68+
MapboxStaticImage parisStaticImage = new MapboxStaticImage.Builder()
69+
.setAccessToken(Mapbox.getAccessToken())
70+
.setStyleId(Constants.MAPBOX_STYLE_OUTDOORS)
71+
.setStaticMarkerAnnotations(customStaticMarkerAnnotation)
72+
.setLat(48.85826)
73+
.setLon(2.29450)
74+
.setZoom(16)
75+
.setPitch(20)
76+
.setBearing(60)
77+
.setWidth(320)
78+
.setHeight(320)
79+
.setRetina(true)
80+
.build();
81+
82+
Picasso.with(this).load(parisStaticImage.getUrl().toString()).into(parisImageView);
83+
84+
MapboxStaticImage londonStaticImage = new MapboxStaticImage.Builder()
85+
.setAccessToken(Mapbox.getAccessToken())
86+
.setStyleId(Constants.MAPBOX_STYLE_STREETS)
87+
.setLat(51.5062)
88+
.setLon(-0.0756)
89+
.setZoom(14)
90+
.setGeoJson(Feature.fromGeometry(Point.fromCoordinates(Position.fromCoordinates(-0.0756, 51.5062))))
91+
.setWidth(320)
92+
.setHeight(320)
93+
.setRetina(true)
94+
.build();
95+
96+
Picasso.with(this).load(londonStaticImage.getUrl().toString()).into(londonImageView);
97+
}
98+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ScrollView
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:app="http://schemas.android.com/apk/res-auto"
5+
xmlns:tools="http://schemas.android.com/tools"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent"
8+
android:clipToPadding="false"
9+
android:paddingBottom="6dp"
10+
android:paddingTop="6dp"
11+
tools:context=".staticimage.StaticImageWithAnnotationsActivity">
12+
13+
<LinearLayout
14+
android:layout_width="match_parent"
15+
android:layout_height="wrap_content"
16+
android:orientation="vertical">
17+
18+
<android.support.v7.widget.CardView
19+
android:layout_width="match_parent"
20+
android:layout_height="wrap_content"
21+
android:layout_marginEnd="6dp"
22+
android:layout_marginLeft="6dp"
23+
android:layout_marginRight="6dp"
24+
android:layout_marginStart="6dp"
25+
app:cardPreventCornerOverlap="true"
26+
app:cardUseCompatPadding="true">
27+
28+
<ImageView
29+
android:id="@+id/parisImageView"
30+
android:layout_width="match_parent"
31+
android:layout_height="wrap_content"
32+
android:adjustViewBounds="true"
33+
android:scaleType="fitCenter"/>
34+
35+
</android.support.v7.widget.CardView>
36+
37+
<android.support.v7.widget.CardView
38+
android:layout_width="match_parent"
39+
android:layout_height="wrap_content"
40+
android:layout_marginEnd="6dp"
41+
android:layout_marginLeft="6dp"
42+
android:layout_marginRight="6dp"
43+
android:layout_marginStart="6dp"
44+
app:cardPreventCornerOverlap="true"
45+
app:cardUseCompatPadding="true">
46+
47+
<ImageView
48+
android:id="@+id/veniceImageView"
49+
android:layout_width="match_parent"
50+
android:layout_height="wrap_content"
51+
android:adjustViewBounds="true"
52+
android:scaleType="fitCenter"/>
53+
54+
</android.support.v7.widget.CardView>
55+
56+
<android.support.v7.widget.CardView
57+
android:layout_width="match_parent"
58+
android:layout_height="wrap_content"
59+
android:layout_marginEnd="6dp"
60+
android:layout_marginLeft="6dp"
61+
android:layout_marginRight="6dp"
62+
android:layout_marginStart="6dp"
63+
app:cardPreventCornerOverlap="true"
64+
app:cardUseCompatPadding="true">
65+
66+
<ImageView
67+
android:id="@+id/londonImageView"
68+
android:layout_width="match_parent"
69+
android:layout_height="wrap_content"
70+
android:adjustViewBounds="true"
71+
android:scaleType="fitCenter"/>
72+
73+
</android.support.v7.widget.CardView>
74+
75+
</LinearLayout>
76+
</ScrollView>

mapbox/app/src/main/res/values/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
<string name="title_geocoding_service">Geocoding service</string>
3232
<string name="title_maki_icons">Maki icons</string>
3333
<string name="title_static_image">Static image</string>
34-
<string name="title_simplify_polyline">Simplify polyline</string>
34+
<string name="title_static_image_with_annotations">Static Image with Annotations</string>
35+
<string name="title_simplify_polyline">Simplify staticPolylineAnnotation</string>
3536
<string name="title_map_matching">Map matching</string>
3637
<string name="title_turf_bearing">Turf bearing</string>
3738
<string name="title_turf_destination">Turf destination</string>
@@ -50,6 +51,7 @@
5051
<string name="description_geocoding_service">Gets your current location and returns information using geocoder.</string>
5152
<string name="description_maki_icons">List of the Maki icons.</string>
5253
<string name="description_static_image">Use the static map API and display in an image view.</string>
54+
<string name="description_static_image_with_annotations">Use the static map API with Annotations and display in an image view.</string>
5355
<string name="description_simplify_polyline">Take a polyline and simplify it\'s geometry.</string>
5456
<string name="description_map_matching">Use the map matching API to match a route to a road.</string>
5557
<string name="description_turf_bearing">Use Turf to get the bearing.</string>

mapbox/dependencies.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ext {
1414
supportCompat : 'com.android.support:support-compat:25.1.0',
1515
supportDesign : 'com.android.support:design:25.1.0',
1616
supportRecyclerview : 'com.android.support:recyclerview-v7:25.1.0',
17+
supportCardView : 'com.android.support:cardview-v7:25.1.0',
1718

1819
// mapbox
1920
mapbox : 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.1@aar',

mapbox/libjava-core/src/main/java/com/mapbox/services/Constants.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,8 @@ public class Constants {
4949
public static final String MAPBOX_STYLE_SATELLITE = "satellite-v9";
5050
public static final String MAPBOX_STYLE_SATELLITE_HYBRID = "satellite-streets-v9";
5151

52+
public static final String PIN_SMALL = "pin-s";
53+
public static final String PIN_MEDIUM = "pin-m";
54+
public static final String PIN_LARGE = "pin-l";
55+
5256
}

mapbox/libjava-core/src/main/java/com/mapbox/services/commons/utils/TextUtils.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.mapbox.services.Constants;
44

5+
import java.math.RoundingMode;
56
import java.text.DecimalFormat;
67
import java.text.DecimalFormatSymbols;
78
import java.util.Locale;
@@ -58,11 +59,26 @@ public static String join(CharSequence delimiter, Object[] tokens) {
5859
*
5960
* @param coordinate a double value representing a coordinate.
6061
* @return a formatted string.
61-
* @since 2.0.1
62+
* @since 2.1.0
6263
*/
6364
public static String formatCoordinate(double coordinate) {
6465
DecimalFormat decimalFormat = new DecimalFormat("0.######", new DecimalFormatSymbols(Locale.US));
6566
return String.format(Constants.DEFAULT_LOCALE, "%s",
6667
decimalFormat.format(coordinate));
6768
}
69+
70+
/**
71+
* Allows the specific adjusting of a coordinates precision.
72+
*
73+
* @param coordinate a double value representing a coordinate.
74+
* @return a formatted string.
75+
* @since 2.1.0
76+
*/
77+
public static String formatCoordinate(double coordinate, int precision) {
78+
String pattern = "0." + new String(new char[precision]).replace("\0", "0");
79+
DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(Locale.US);
80+
df.applyPattern(pattern);
81+
df.setRoundingMode(RoundingMode.FLOOR);
82+
return df.format(coordinate);
83+
}
6884
}

0 commit comments

Comments
 (0)