我正在开发一款应用于驾车时在路上使用的应用,就像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有时不准确,我在中心的小标记有时会越野......
答案 0 :(得分:0)
一种可能的方法是使用Google Directions API。
如果你知道用户的出发地和目的地,你可以提出一个请求,获得所有中间点,每次更改位置,尝试找到该路线上最近的点。
如果您只是想在路上显示用户位置,您可以提出多个请求,但请注意limits。有关详细信息,请参阅my answer here。
无论哪种方式,您都必须忘记默认的“蓝点”作为位置指示器并使用Marker
,或者如果您确实需要使用蓝点,则必须创建代理LocationSource
,这会调整从LocationClient
或LocationManager
收到的排名。