如果我无法用我的主题解释这种情况,我很抱歉,但问题就在这里..
我在谷歌地图上有自定义标记(Imageview),每当我点击它检索地址的标记并在textView中显示..当我完全放大地图并点击标记时,它会给出完全正确的地址但是当我缩小时,它仍然给出了地址,但是这次距离我的标记的确切位置还有1或2个区块。所以令人困惑,任何人都可以帮我解决错误吗?
这是我的代码
OnTouchListener imgSourceOnTouchListener
= new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event) {
LatLng center = map.getCameraPosition().target;
String filterAddress = "";
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
center.latitude,
center.longitude, 1);
if (addresses.size() > 0) {
for (int index = 0;
index < addresses.get(0).getMaxAddressLineIndex(); index++)
filterAddress += addresses.get(0).getAddressLine(index) + " ";
}
}catch (IOException ex) {
ex.printStackTrace();
}catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
touchedXY.setText(String.valueOf("address" +filterAddress));
return true;
}
};
答案 0 :(得分:0)
首先,你不能以这种方式使用Marker imgSource1 = (ImageView)findViewById(R.id.view);
标记应该添加在Java代码中,而不是像你所说的那样通过id从xml文件引用标记。
你必须设置setOnMapClickListener
map.setOnMapClickListener(new OnMapClickListener() {
public void onMapClick(LatLng arg0) {fromMarker = map.addMarker(new MarkerOptions()
.position(arg0)); }
});
现在有一个标记将放置在您触摸地图的位置,您可以使用此标记显示地址,因此变焦或更改相机位置不会更改您按下的地址位置< / p>