Skip to content

Commit

Permalink
Merge pull request #53 from jmnguyen1999/master
Browse files Browse the repository at this point in the history
search, route, and draw on the map! There's some bugs though...
  • Loading branch information
jmnguyen1999 committed May 5, 2021
2 parents 5ec63d2 + 312ec88 commit 15337ca
Show file tree
Hide file tree
Showing 6 changed files with 392 additions and 12 deletions.
Binary file added 5-5-walkthrough.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
With Wings, You Never Walk Alone

## Progress so far...
<img src="5-4-walkthrough.gif">
<img src="5-5-walkthrough.gif">

## Table of Contents
1. [Overview](#Overview)
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key" /> <!-- make sure within the application tag, otherwise app will crash with XmlResourceParser errors -->
<!--
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyC1c3vYFZDb2Ebr1uZbtt-IjGNzARXgVho" /> -->

<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.codepath.fileprovider"
Expand Down
99 changes: 99 additions & 0 deletions app/src/main/java/com/example/wings/DataParser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package com.example.wings;

import android.util.Log;

import com.google.android.gms.maps.model.LatLng;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class DataParser {

public List<List<HashMap<String, String>>> parse(JSONObject jsonObject) {
Log.d("DataParser", "in parse()");
List<List<HashMap<String, String>>> routes = new ArrayList<>();
JSONArray jRoutes = null;
JSONArray jLegs = null;
JSONArray jSteps = null;

try {
jRoutes = jsonObject.getJSONArray("routes");

//Traversing all routes:
for (int i = 0; i < jRoutes.length(); i++) {
jLegs = ((JSONObject) jRoutes.get(i)).getJSONArray("legs");
List path = new ArrayList<HashMap<String, String>>();

//Traverse all legs:
for (int j = 0; j < jLegs.length(); j++) {
jSteps = ((JSONObject) jLegs.get(j)).getJSONArray("steps");

//Traverse all steps:
for (int k = 0; k < jSteps.length(); k++) {
String polyline = "";
polyline = (String) ((JSONObject) ((JSONObject) jSteps.get(k)).get("polyline")).get("points");
List list = decodePoly(polyline);

//Log.d("DataParser", "in parse(): after decodePoly(): list = " + list.toString());

//Travese all points:
for (int l = 0; l < list.size(); l++) {

//create and initalize hashmap and add to the path field:
HashMap<String, String> hm = new HashMap<>();
hm.put("lat", Double.toString(((LatLng) list.get(l)).latitude));
hm.put("lng", Double.toString(((LatLng) list.get(l)).longitude));
path.add(hm);
}
}
routes.add(path);
}

}
} catch (JSONException e) {
e.printStackTrace();
}

return routes;
}

private List<LatLng> decodePoly(String encoded) {
Log.d("DataParser", "in decodePoly()");
List<LatLng> poly = new ArrayList<>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;

while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;

shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;

LatLng p = new LatLng((((double) lat / 1E5)),
(((double) lng / 1E5)));
poly.add(p);
}

return poly;
}
}

Loading

0 comments on commit 15337ca

Please sign in to comment.