缩小地图会给出一个错误的lat长机器人

时间:2013-10-18 19:40:25

标签: android google-maps

如果我无法用我的主题解释这种情况,我很抱歉,但问题就在这里..

我在谷歌地图上有自定义标记(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;


    }
};

1 个答案:

答案 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>