Android 如何获取单击多段线的位置的纬度?

Android 如何获取单击多段线的位置的纬度?,android,google-maps,google-polyline,Android,Google Maps,Google Polyline,我通过以下方法获得setOnPolylineClickListener 但这将返回单击位置的整个多段线我想要纬度和经度 我们通过MapClickListener实现这一点 我试过在下面的代码中使用PolyUtil,它也不起作用 你做的一切都很好: mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(final LatLng point)

我通过以下方法获得
setOnPolylineClickListener

但这将返回单击位置的整个
多段线
我想要
纬度
经度
我们通过
MapClickListener
实现这一点

我试过在下面的代码中使用
PolyUtil
,它也不起作用


你做的一切都很好:

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

    @Override
    public void onMapClick(final LatLng point) {
        if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true)) {
            // user clicked on polyline

            Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
            Log.d("found", "onMapClick:  found");
        }
    }
});
是解决方案,但默认情况下公差为0.1米,触摸只是在路径上没有此精度。使用,设置适当的
公差
(10米或20米-甚至更多,取决于缩放级别)

一切都会好起来的

更新:

您还可以根据缩放级别修改公差,如:

...
switch (mMap.getCameraPosition().zoom) {
    ...
    case 16:
        tolerance = 30;
    break;
    case 15:
        tolerance = 45;
    break;
    ...
}
...

或者使用公式:
tolerance=f(缩放级别)
like
tolerance=1000/mMap.getCameraPosition().zoom

多段线不返回lat lng,我们只能设置lat lng,颜色。我知道,但是没有办法获得多段线单击位置平面图?试试这个我希望对你有帮助…看看,希望它会对你有帮助。不工作@hemantparmart谢谢当缩放级别较低时它工作,但当缩放级别较高时,然后单击多段线外也被视为在多段线上单击如何修复它。。。有什么建议吗?@akshay_shahane您总是可以根据缩放级别修改
公差
,例如
公差=1000/mMap.getCameraPosition().zoom或类似的东西。或者对每个缩放级别使用
switch/case
开关(mMap.getCameraPosition().zoom){case 16:tolerance=30;break;case 15:tolerance=45;
等。效果非常好……非常感谢……你救了我一天
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

            @Override
            public void onMapClick(final LatLng point) {
                if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true)) {
                    // user clicked on polyline

                    Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
                    Log.d("found", "onMapClick:  found");
                }
            }
        });
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

    @Override
    public void onMapClick(final LatLng point) {
        if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true)) {
            // user clicked on polyline

            Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
            Log.d("found", "onMapClick:  found");
        }
    }
});
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

    @Override
    public void onMapClick(final LatLng point) {
        if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true, 20)) {
            // user clicked on polyline

            Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
            Log.d("found", "onMapClick:  found");
        }
    }
});
...
switch (mMap.getCameraPosition().zoom) {
    ...
    case 16:
        tolerance = 30;
    break;
    case 15:
        tolerance = 45;
    break;
    ...
}
...