坚持在Android地图v2上的道路位置

时间:2013-09-09 14:45:09

标签: android android-maps-v2

我正在开发一款应用于驾车时在路上使用的应用,就像Google官方Google应用程序谷歌地图一样。

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

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

我正在使用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有时不准确,我在中心的小标记有时会越野......

1 个答案:

答案 0 :(得分:0)

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

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

如果您只是想在路上显示用户位置,您可以提出多个请求,但请注意limits。有关详细信息,请参阅my answer here

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