我创建了一个功能,可以跟踪用户的路线并创建折线。我一直在尝试将其保存到 Firebase
- 路线 ID、路线名称、纬度、经度
我使用的方法是,每次位置更改时,用户的新纬度和经度都会保存到 Firebase、用户设置的路线名称和(当前)静态路线 ID 中。
if (mCurrentLocation != null) {
String newLat = String.valueOf(mCurrentLocation.getLatitude());
String newLng = String.valueOf(mCurrentLocation.getLongitude());
LatLng newPoint = new LatLng(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
List<LatLng> points = route.getPoints();
points.add(newPoint);
route.setPoints(points);
Map<String, String> routePoint = new HashMap<String,String>();
routePoint.put("routeID", "124");
routePoint.put("routeName", saveRouteTitle);
routePoint.put("lat", newLat);
routePoint.put("lng", newLng);
mFirebaseRef.push().setValue(routePoint);
}
但是,当我使用适配器检索数据时,如下所示,
@Override
protected void populateView(View view, Route route) {
// Map a Chat object to an entry in our listview
String routeName = route.getRouteName();
int routeID = route.getRouteID();
String lat = route.getLat();
String lng = route.getLng();
TextView tvRouteName = (TextView) view.findViewById(R.id.tvRouteName);
tvRouteName.setText(routeName + ": ");
}
我得到的是“route”每个子项的列表视图,这意味着如果我设置的routeName是"Walking"
,就会出现一个列表,里面写着“步行”。
我想将同一路线名称的所有纬度和经度保存在一起,然后在列表视图中检索它们,以便当用户选择路线名称时,我可以使用数据库中的纬度和经度重新生成地图上的折线。这可以做到吗?我不介意不使用 Firebase,但在线服务器更适合备份。
Firebase 非常适合存储和检索此类数据。
例如,假设您让用户输入路线名称和 ID,并且您希望存储从起点到目的地的路径沿线的航点(每个航点的纬度和经度):
将数据存储在 Firebase 中的一种方法是:
random_route_node_name
routeName: "a route name"
routeId: "some route id"
waypoints
random_waypoint_node_name
lat: "latitude"
lon: "longitude"
random_waypoint_node_name
lat: "latitude"
lon: "longitude"
random_route_node_name
routeName: "a route name"
routeId: "some route id"
waypoints
random_waypoint_node_name
lat: "latitude"
lon: "longitude"
random_waypoint_node_name
lat: "latitude"
lon: "longitude"
在每个父节点 (random_route_node_name) 中,您有路线名称、id,然后是路径上的航点,每个航点都有经度和纬度。
有几件重要的事情需要指出。
random_route_node_name 和 random_waypoint_node_name 是使用 Firebase childByAutoId 或其他非特定名称生成的名称。这是因为节点的名称不应直接与数据绑定,因此可以更改数据而不影响节点名称。航路点也是如此;可以修改航点子数据而不影响子父名称
我不知道是否需要查询航路点的功能,但如果是这样,应该做的其他事情是展平此数据 - 每条路线的航路点可以存储在单独的节点中,这将允许查询特定航路点处于高水平。例如,用户想要知道其当前位置半径内的所有路径点。
事实上,查询只能在特定的路线内完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)