I used google android map to mark current location and another location . Also I wanted to mark drive path between these directions. But I could draw just only a single line between theses two locations.
Here are my steps,
This is my layout file.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_roster_clock_out_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="3dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".RosterClockOutActivity"
tools:showIn="@layout/app_bar_roster_clock_out">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="vertical">
<com.google.android.gms.maps.MapView
android:id="@+id/roster_clock_out_map_view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:clickable="true"
android:apiKey="my api key"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/roster_clock_out_map_view"
android:layout_marginTop="4dp"
android:layout_marginBottom="15dp"
android:alpha="0.5"
android:background="#765491"
android:orientation="vertical">
<TextView
android:id="@+id/roster_clock_out_date_text"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:paddingTop="7dp"
android:background="#563e6b"
android:paddingBottom="7dp"
android:text="5 th MAY 2017"
android:textAlignment="center"
android:textStyle="bold"
android:textColor="@android:color/white"
android:textSize="24sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="START TIME"
android:textStyle="bold"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="END TIME"
android:textStyle="bold"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/roster_clock_out_st_time_text"
android:layout_weight="1"
android:text="08.30 AM"
android:textStyle="bold"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="20sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/roster_clock_out_ed_time_text"
android:layout_weight="1"
android:text="05.30 PM"
android:textStyle="bold"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="20sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/roster_clock_out_location_text"
android:layout_marginRight="35dp"
android:layout_marginLeft="35dp"
android:layout_marginTop="8dp"
android:drawablePadding="5dp"
android:drawableLeft="@drawable/ic_place_small"
android:textAlignment="center"
android:maxLines="3"
android:lines="3"
android:clickable="true"
android:textSize="14sp"
android:text="Australian Strategic Partnership\n#9, School Lane, Kollpity, Colombo 3"
android:textColor="@android:color/white" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="14sp"
android:text="CLOCK IN"
android:textStyle="bold"
android:textAlignment="center"
android:textColor="#f7f316"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/roster_clock_in_sign_time_text"
android:layout_weight="1"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#f7f316"
android:text="08:43 PM"
android:textAlignment="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/roster_clock_in_delayed_time_text"
android:layout_weight="1"
android:textSize="18sp"
android:textColor="@android:color/white"
android:text="04:00"
android:textStyle="bold"
android:textAlignment="center"/>
</LinearLayout>
</LinearLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/roster_clock_out_save_btn"
style="@style/ButtonStyle"
android:layout_height="32dp"
android:background="#800080"
android:alpha="5"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:textSize="16sp"
android:textStyle="bold"
android:clickable="true"
android:layout_weight="1.5"
android:text="CLOCK OUT" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
And this step is for google map implement inside an activity,
public class RosterActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private Context context;
MapView locationMap;
View mainView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_roster);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_roster);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mainView = this.getWindow().getDecorView().findViewById(R.id.content_roster_clock_in_layout);
context = this;
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_roster);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view_roster);
Menu menu = navigationView.getMenu();
if (menu != null) {
for (int i = 0; i < menu.size(); i++) {
MenuItem menuItem = menu.getItem(i);
}
}
navigationView.setNavigationItemSelectedListener(this);
locationMap = (MapView) findViewById(R.id.roster_map_view);
locationMap.onCreate(savedInstanceState);
InternetConnectivity internetConnectivity = new InternetConnectivity();
final boolean isConnectedToInternet = internetConnectivity.isConnectedToInternet(context);
final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
final Criteria criteria = new Criteria();
final Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
if (isConnectedToInternet == true) {
final LatLng assignedLocation = new LatLng(6.931253, 79.906292);
locationMap.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
if (ActivityCompat.checkSelfPermission(RosterActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(RosterActivity.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
googleMap.setMyLocationEnabled(true);
}
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setAllGesturesEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setScrollGesturesEnabled(true);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
if (location != null) {
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(location.getLatitude(), location.getLongitude()))
.zoom(10)
.bearing(0)
.tilt(40)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
googleMap.addMarker(new MarkerOptions().position(assignedLocation).title("Your Location").draggable(true));
}
});
setData(responseBody);
}else{
Snackbar.make(mainView, "No Internet Connection", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
return true;
}
@Override
protected void onStart() {
super.onStart();
locationMap.onStart();
}
@Override
protected void onResume() {
super.onResume();
locationMap.onResume();
}
@Override
protected void onPause(){
super.onPause();
locationMap.onPause();
}
@Override
protected void onStop(){
super.onStop();
locationMap.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
locationMap.onDestroy();
}
@Override
public void onLowMemory(){
super.onLowMemory();
locationMap.onLowMemory();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
locationMap.onSaveInstanceState(outState);
}
}
How can I do with my mapview and google map ?
Have any ideas ?
Data which get from above api is a list of location from A to B. All you have to do is draw a list of dot from data. You will get a direction line from a to b