通过更新Android版Google Maps中的GeoFire位置来移动多个标记图标 [英] Multiple Marker Icon Move by Updating GeoFire Location in Google Maps for Android
本文介绍了通过更新Android版Google Maps中的GeoFire位置来移动多个标记图标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用方圆1公里范围内的地火在Google地图上显示所有骑手的位置.但是在Google地图中仅显示一个车手标记图标.尽管我得到了所有骑手的纬度和经度.
I’m trying to display all riders’ position in google maps using geo-fire within 1 km radius. But display only one rider marker icon in google maps. Though I get all riders latitude and longitude.
@Override
public void onLocationChanged(Location location) {
if (location != null) {
updateRiderPosition(new GeoLocation(location.getLatitude(), location.getLongitude()));
}
}
public void updateRiderPosition(GeoLocation location) {
ArrayList<Marker> markerList = new ArrayList<>();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(mPositionNode).child(mAuthId);
GeoFire geoFire = new GeoFire(ref);
GeoQuery geoQuery = geoFire.queryAtLocation(location, 1);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
//---------------------------------------------------
if (markerList != null) {
for (Marker marker : markerList) {
marker.remove();
}
}
markerList.add(mMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude)).icon(icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_motorbike)))));
//---------------------------------------------------
}
@Override
public void onKeyExited(String key) {}
@Override
public void onKeyMoved(String key, GeoLocation location) {}
@Override
public void onGeoQueryReady() {}
@Override
public void onGeoQueryError(DatabaseError error) {}
});
}
推荐答案
@Override
public void onLocationChanged(Location location) {
if (location != null) {
updateRiderPosition(new GeoLocation(location.getLatitude(), location.getLongitude()));
}
}
private ArrayList<Marker> markerList = new ArrayList<>();
private void updateRiderPosition(GeoLocation location) {
if (markerList != null) {
for (Marker marker : markerList) {
marker.remove();
}
}
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(mPositionNode).child(mAuthId);
GeoFire geoFire = new GeoFire(ref);
GeoQuery geoQuery = geoFire.queryAtLocation(location, 1);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
markerList.add(mMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude)).icon(icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_motorbike)))));
}
@Override
public void onKeyExited(String key) {}
@Override
public void onKeyMoved(String key, GeoLocation location) {}
@Override
public void onGeoQueryReady() {}
@Override
public void onGeoQueryError(DatabaseError error) {}
});
}
这篇关于通过更新Android版Google Maps中的GeoFire位置来移动多个标记图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文