如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]
Posted
技术标签:
【中文标题】如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]【英文标题】:How to send latitude and longitude of a Google Maps marker to Firebase - android? [closed] 【发布时间】:2019-12-27 16:11:42 【问题描述】:我想创建一个在线购物应用。我已经添加了一个 MapActivity 以及当用户长按某个位置时在地图上添加标记的功能。我想将用户标记的纬度和经度发送到 firebase 以存储在实时数据库中。
public void onMapReady(final GoogleMap googleMap)
mMap = googleMap;
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener()
@Override
public void onMapLongClick(LatLng latLng)
// First check if myMarker is null
if (myMarker == null)
// Marker was not set yet. Add marker:
myMarker = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("Your marker title")
.snippet("Your marker snippet"));
LatLng myLatLng = new LatLng(myMarker.getPosition().latitude,myMarker.getPosition().longitude);
else
// Marker already exists, just update it's position
myMarker.setPosition(latLng);
LatLng myLatLng = new LatLng(myMarker.getPosition().latitude,myMarker.getPosition().longitude);
);
【问题讨论】:
你使用的是Firestore
还是Realtime Database
?
@GauravMall 一个标记变量。它是全局声明的。
@GauravMall 和它的实时数据库伙伴
那么您收到的经度和纬度了吗?
【参考方案1】:
首先,将Reference
定义为locations
DatabaseReference myRef = FirebaseDatabase.getInstace().getRef().child("locations");
在这里你可以得到LatLng
的位置:
LatLng myLatLng = new LatLng(myMarker.getPosition().latitude, myMarker.getPosition().longitude);
然后你将它存储在你的数据库中:
myRef.child("your_location").child("Latitude").set(myLatLng.getLatitute);
myRef.child("your_location").child("Longitude").set(myLatLng.getLongitude);
要检索信息基本上是这样做的:
myRef.child("your_location").addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
double latitude = dataSnapShot.getValue("Latitude", Double.class);
double longitude = dataSnapShot.getValue("Longitude", Double.class);
LatLng retrievedLang = new LatLng(latitude, longitude);
@Override
public void onCancelled(DatabaseError databaseError)
Log.w(TAG, "loadLocation:onCancelled", databaseError.toException());
)
【讨论】:
我是否必须再插入代码才能将位置上传到数据库伙伴?还是这一切? 就是这样,很简单。您只需将它们存储为简单的值。 @GauravMall firebase 以 Long 格式存储经度和纬度的值,因此您需要提供 long 我将它们存储为双精度值以获得更高的准确性,这会影响什么吗?【参考方案2】:实际上我不记得Java语法,如果有一些奇怪的语法,请原谅我。但是逻辑应该是这样的。
public void onMapLongClick(LatLng latLng)
if (myMarker == null)
...
else
...
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("myDatabase/someDirectory");
MyMapPoint point = new MyMapPoint();
point = new Point(latLng.latitude, latLng.longitude);
usersRef.setValueAsync(point);
MyMapPoint 是一个数据类。它应该是这样的。
class MyMapPoint()
String selectedLat, selectedLong;
MyMapPoint(Long lat, Long long)
selectedLat = lat;
selectedLong = long;
【讨论】:
以上是关于如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章