3

我正在开发一个在驾驶时在路上使用的应用程序,就像谷歌官方应用程序 Android 版谷歌地图一样。

如果您在谷歌地图应用程序上设置目标和原点并开始路线,它会将您粘在路上:箭头标记将在道路上,它看起来有点像您的位置和最近的道路之间的磁铁动作,所以您永远不会越野,因为你应该在路上。

那是怎么做的?我想在用户位置居中地图,但我希望它是“道路粘性”并且永远不会离开道路,所以我想在道路上有纬度和经度值......

我正在使用android maps v2,我已经搜索了很长时间,但从未看到过解决方案-

这是我的 onlocationchanged 方法:

@Override
public void onLocationChanged(Location location) {

    latitude = location.getLatitude();
    longitude = location.getLongitude();

    debugTv.setText(latitude.toString() + ", " + longitude.toString());

    String msg = "Updated: " + latitude.toString() + ", "
            + longitude.toString();

    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();

    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(new LatLng(latitude, longitude)).zoom(17).tilt(40)
            .build();

    mapa.animateCamera(CameraUpdateFactory
            .newCameraPosition(cameraPosition));

}

像这样,相机在我所在的地方居中,这很好,但由于 GPS 有时不太准确,我在中心的小标记有时会越野......

4

1 回答 1

0

一种可能的方法是使用Google Directions API

如果您知道用户的出发地和目的地,您可以发出一次请求,获取所有中间点,并且每次位置更改时,尝试找到该路线上最近的点。

如果您只想显示用户在路上的位置,您可以发出多个请求,但要注意限制。有关详细信息,请在此处查看我的答案

无论哪种方式,您都必须忘记默认的“蓝点”作为位置指示器并使用Marker它,或者如果您确实需要使用蓝点,则必须创建代理LocationSource,它可以调整从LocationClientor接收到的位置LocationManager

于 2013-09-09T18:54:57.827 回答