@Override publicvoidonDataChange(DataSnapshot dataSnapshot) { Log.d("data",String.valueOf(dataSnapshot.getValue())); System.out.println(dataSnapshot.getValue()); for (DataSnapshot a : dataSnapshot.getChildren()) { MapDatamapData= a.getValue(MapData.class); arrayList.add(mapData); lati.add(arrayList.get(i).getLatituide()); longit.add(arrayList.get(i).getLongitude()); Log.d("mapi","i am in loop"); mMap = googleMap; Doublelat= Double.parseDouble(lati.get(i)); Doublelongi= Double.parseDouble(longit.get(i)); sydney = newLatLng(longi, lat); points.add(sydney); MarkerOptionsmop=newMarkerOptions(); mop.position(sydney); mop.title("check"); mMap.addMarker(mop); Log.d("latitude", String.valueOf(lat)); Log.d("longitude", String.valueOf(longi)); // Add a marker in Sydney and move the camera mMap.addMarker(newMarkerOptions().position(sydney).title("check")); mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
возвращает геометрию дороги, наиболее подходящую для данного набора координат GPS. Этот сервис использует до 100 точек GPS, собранных по маршруту, и возвращает аналогичный набор данных с привязкой точек к наиболее вероятным дорогам, по которым двигалось транспортное средство.
Что-то подобное для данных из Google Maps Roads API, например, Привязка к дороге:
И не забудьте добавить поддержку Google Maps Roads API для вашего проекта в консоль Google APIs (выберите свой проект, затем выберите панель мониторинга, затем нажмите кнопку "+ ВКЛЮЧИТЬ API И СЕРВИСЫ", затем слева "Фильтровать по" выберите "Карты", затем нажмите "Google Maps Roads API" и, наконец, нажмите кнопку "ВКЛЮЧИТЬ").
У вас должно получиться что-то вроде этого:
где: синяя ломаная линия - для исходных точек, красная ломаная линия - для точек привязки.
Помните, что существует ограничение в 100 точек GPS и 2500 запросов в день на пользователя (IP) и 10 запросов в секунду. А также вам нужно более элегантное решение для загрузки JSON с привязанными точками.