如何在谷歌地图中绘制多个地理点之间的路线(注意:这是公交车站路线)?
Posted
技术标签:
【中文标题】如何在谷歌地图中绘制多个地理点之间的路线(注意:这是公交车站路线)?【英文标题】:How to draw a route between many geo points in google map (note: this is a bus stop route line)? 【发布时间】:2019-06-07 03:49:27 【问题描述】:This is my image.Wrong route. I want to this route like that.Correct route.
我有很多静态地理点作为公交车站的地理点。有时地理点存在上百个。我可以使用折线进行路线,但它显示的是直线。我想查看道路线。
我尝试并寻找很多问题,但只看到两点之间。我已经尝试使用谷歌的道路 API。但这仅限于 100 点。所以我不能使用道路 API。请指出我。
public void getBusStopInfo()
HttpService httpService = NetManager.getInstance().create(HttpService.class);
Observable<GdResultData> observable = httpService.findByRoute(id);
RxManager.getInstance().getHttpListResult(observable, newRxSubscriber<GdResultBean<List<BusStopServerBean>>>(getContext())
@Override
protected void _onError(Throwable e)
e.printStackTrace();
if (mLoadingDialog != null)
mLoadingDialog.dismiss();
@Override
protected void _onNext(GdResultBean<List<BusStopServerBean>>listGdResultBean)
if (listGdResultBean.getErrorID() != HttpFields.HTTP_RESULT_OK)
return;
List<BusStopServerBean> object = listGdResultBean.getObject();
for (BusStopServerBean busStopServerBean : object)
if (isMmLanguage)
mMap.addMarker(new MarkerOptions().position(new LatLng(busStopServerBean.getLat(), busStopServerBean.getLng()))
.title(busStopServerBean.getNameMm()).snippet(busStopServerBean.getRoadMm())
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.bus_stop_circler)).alpha(0.9f).flat(true))
.setTag(busStopServerBean.getId());
else
mMap.addMarker(new MarkerOptions().position(new LatLng(busStopServerBean.getLat(), busStopServerBean.getLng()))
.title(busStopServerBean.getNameEn()).snippet(busStopServerBean
.getRoadEn()).icon(BitmapDescriptorFactory.fromResource(R.mipmap.bus_stop_circler))
.alpha(0.9f).flat(true)).setTag(busStopServerBean.getId());
insertBusLine(object);
mLoadingDialog.dismiss();
, BusStopServerBean.class);
private void insertBusLine(List<BusStopServerBean> object)
if (object == null || object.size() == 0)
return;
LatLngBounds.Builder boundBuilder = new LatLngBounds.Builder();
LatLng latLng;
//This is for route
PolylineOptions polylineOptions = new PolylineOptions()
.color(Color.parseColor(color))
.geodesic(false)
.width(5);
//this is for geo points latlng over 100 obj size
for (BusStopServerBean busStopServerBean : object)
latLng = new LatLng(busStopServerBean.getLat(), busStopServerBean.getLng());busStopServerBean.getLng()));
polylineOptions.add(latLng);
boundBuilder.include(latLng);
mMap.addPolyline(polylineOptions);//this is show route on map[enter image description here][1]
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(boundBuilder.build(), 11));
【问题讨论】:
【参考方案1】:具有多个航点的每条路线都由两个航点之间的路线组成。所以,考虑到restrictions:
注意:使用 10 个或更多航点或航点的查询 优化,支付更高的费率。了解有关发票的更多信息 适用于 Google Maps Platform 产品。
您可以将具有 100 多个航点的单个请求拆分为具有少于 10 个航点的多个请求(甚至并行运行),并将其结果组合起来以获得整个路线。
【讨论】:
@HZan 是的,没有其他办法。但是您应该将单个请求与多个航点拆分,以将不超过 10 个航点的请求相乘。还可以从Roads API 中查看Snap to Roads。 我通过roads api 进行了测试,但我的路线是直的,这是限制100 分。如果我在上面加上100 分,那就是错误。 @HZan 只需创建 10 个 10 个点的请求,而不是一个 100 个点。 你有任何示例或教程。以上是关于如何在谷歌地图中绘制多个地理点之间的路线(注意:这是公交车站路线)?的主要内容,如果未能解决你的问题,请参考以下文章