【发布时间】:2017-07-04 06:28:15
【问题描述】:
我正在开发一个 android 应用程序,其中一些用户从他们的设备打开相同的活动。此活动中有一张地图,当用户从他们的设备打开此活动时,他们的位置坐标将从 Firebase 获取,并且基于这些坐标的标记会显示在地图上。
这是我的代码:
acceptingUserReference.child(requestID).child(key).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
final Map<String, String> newAcceptedUser = (Map<String, String>) dataSnapshot.getValue();
nameOfP.add(newAcceptedUser.get("pName"));
cLatP.add(newAcceptedUser.get("currentLat").trim());
cLngP.add(newAcceptedUser.get("currentLng").trim());
addMarkers();
//Check map is loaded
mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setMapToolbarEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mMap.setMaxZoomPreference(19.0f); mMap.setMyLocationEnabled(true);
}
});
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
这里是addMarkers() 方法:
public void addMarkers() {
mMap.clear();
venueMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(venueLat), Double.parseDouble(venueLng)));
markersList.add(venueMarker);
for (int i = 0; i < nameOfP.size(); i++) {
p = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.valueOf(cLatP.get(i)), Double.valueOf(cLngP.get(i)))).title(nameOfP.get(i).trim()).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
markersList.add(pMarker);
}
}
这里是onLocationChanged():
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
currentLtAU = mCurrentLocation.getLatitude();
currentLnAU = mCurrentLocation.getLongitude();
}
用户不断向特定位置移动。
我想要在用户移动时将相应的标记移动到新位置,以便每个人都可以看到每个人当前所在的位置。请帮我弄清楚。
【问题讨论】:
-
什么是 pMarker?不是您将标记分配给 p 的变量吗?另外,您是否遇到任何错误,或者只是无法正常工作?
-
我建议根据用户“id”将标记添加到
hashmap,然后在您的应用从 Firebase 接收值时自行编辑标记,而不是每次都创建新值。 -
在
onLocationChanged()时致电acceptingUserReference.child(requestID)并将您的位置更新为FireBase -
@KishoreJethava 在 onLocationChanged() 之前得到了零件,请在前面描述零件。
-
发布
onLocationChanged代码。
标签: android google-maps google-maps-markers google-maps-android-api-2 android-maps-v2