在Polyline Android上没有GeoDesic

时间:2014-08-19 08:27:21

标签: android google-maps polyline

我创建了一个Map Fragment,它将arraylist(解析的XML)中的标记添加到Google地图中。在标记之间我绘制折线。一切正常,但线条是直线绘制的,尽管我已经激活了测地线。

我是否有特定的方法或代码来实现测地工作。我想有一条线,从街道到另一条街道。或者Geodesic只能使用2个标记?我有两个以上。

private void setUpMap() {

            PolylineOptions routeDraw = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true);

            try {

                for (RowItem aPoisMap : poisMap) {
                    latitude = aPoisMap.getLatitudePoi();
                    longitude = aPoisMap.getLongitudePoi();
                    poiTitle = aPoisMap.getTitle();
                    poiDesc = aPoisMap.getDesc();
                    marker = mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title(poiTitle).snippet(poiDesc));
                    routeDraw.add(new LatLng(latitude, longitude));
                }
                Polyline polyline = mMap.addPolyline(routeDraw.geodesic(true));
                latitudeZoom = poisMap.get(0).getLatitudePoi();
                longitudeZoom = poisMap.get(0).getLongitudePoi();
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitudeZoom, longitudeZoom), 14));

                mMap.setMyLocationEnabled(true);
            } catch (NullPointerException e) {
                Context context = getActivity().getApplicationContext();
                CharSequence text = getResources().getString(R.string.errormap);
                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context, text, duration);
                toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);
                toast.show();
            }
        }

1 个答案:

答案 0 :(得分:4)

你误解了geodesic line是什么。现在要使用道路显示两个特定点之间的路线,您需要使用Directions API来获取点,然后可以将这些点构建到折线中。

This answer提供了一种很好的方法来解析Directions API输出的结果。它只是解析XML然后连接PolylineOptions对象中的点。

注意:Directions API的默认每日限额为2,500次查询。