如何在地图屏幕上获取用户触摸的坐标(x,y)。我担心的是在屏幕上显示点击标记的位置。目前我能够获得点击标记的LatLng,但无法获得点数屏幕。我想在单击的标记上显示一个对话框,如customInfoWindow。 请提出任何解决方案。 谢谢
答案 0 :(得分:0)
如果您有坐标,可以获取某个位置的实际地址。它被称为反向地理编码。
在标记上设置onMarkerClickListener,然后对坐标进行反向地理编码以异步获取地址,然后在标记的信息窗口中设置结果。
有关所有详细信息,请参阅this文章。
获取物理地址的示例代码 -
class GetAddress extends AsyncTask<LatLng, Void, String> {
@Override
protected String doInBackground(LatLng... params) {
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = "No Result";
try {
List<Address> addresses = geocoder.getFromLocation(params[0].latitude, params[0].longitude, 1);
if (addresses != null && addresses.size() != 0) {
Address address = addresses.get(0);
ArrayList<String> addressFragments = new ArrayList<>();
for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
addressFragments.add(address.getAddressLine(i));
}
result = TextUtils.join(System.getProperty("line.separator"),
addressFragments);
return result;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Here set the address to where ever you want.
}
在标记上设置监听器 -
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
new GetAddress().execute(marker.getPosition());
}
});