android - 从标记 google maps-android studio 获取所有信息
问题描述
我正在制作一个应用程序,当它打开时,它会显示用户的当前位置。问题是我还想通过按下标记来放置所有详细信息(家庭地址、邮政编码、国家),就像这个应用程序应用 程序照片一样
代码:
private GoogleMap mMap;
private GoogleApiClient googleApiClient;
private LocationRequest locationRequest;
private Location lastLocation;
private Marker currentUserLocationMarker;
这是包含标记的方法
@Override
public void onLocationChanged(Location location) {
lastLocation=location;
if(currentUserLocationMarker!=null)
{
currentUserLocationMarker.remove();
}
LatLng latLng= new LatLng(location.getLatitude(),location.getLongitude());
MarkerOptions markerOptions= new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Test");
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker_mini));
currentUserLocationMarker = mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomBy(15));
if(googleApiClient != null)
{
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient,this);
}
}
解决方案
您可以使用Geocoding API并使用反向地理编码从 latlng 获取详细信息。这是一个反向地理编码查询示例,
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
这将返回一个带有多个地址结果的 json 响应,其中第一个地址是最突出的结果。
您也可以在 android 中使用 Geocoder,如下所示,(此示例获取地址列表并从返回的结果中记录格式化的地址行)
Geocoder geocoder=new Geocoder(this);
try {
List<Address> addressList=geocoder.getFromLocation(40.714232,-73.9612889,10);
for(Address address:addressList){
Log.d("TAG",address.getAddressLine(0));
}
} catch (IOException e) {
e.printStackTrace();
}
getFromLocation (..)的参数是 lat、lng 和您要检索的最大结果数,第一个againg 是突出的结果。
查看 Geocoding API 的文档以了解您还可以做什么,
https://developers.google.com/maps/documentation/geocoding/intro#reverse-example
还可以查看 Geocoder 的文档,
推荐阅读
- nunit - 无法使用 WinAppDriver 在记事本中打开“文件”或“编辑”菜单
- javascript - 批量为所有提交的 url 附加前缀
- go - 如何在 Go 中解析日历周数
- flutter - 如何在颤动上修复底部溢出 137 像素
- javascript - 用three.js创建粒子动画
- flask - 无服务器 - 如何在 AWS Lambda 函数中定期运行 Flask 命令?
- angular8 - Devextreme Master Detail 网格不起作用
- c# - ActionBlock 似乎在我想要它之前完成
- parent-child - 如何在 HTML 父子关系中使用 2 个 Svelte 组件将数据从子代传递给父代
- ruby - 使用 next 关键字和空方法终止每个循环的技术目的是什么?