(Android - Google 地图) 为什么折线自动制作闭合图形

(Android - Google Maps) Why polyline automatically making a closed figure

我一直在开发一个基于地图的应用程序。在那里,我在 Polylines 的帮助下展示了公交路线。正如您在这张图片中看到的那样,一切正常:

但是当我重新启动应用程序或重新访问地图时activity,折线会自动连接最后一个点和第一个点(坐标),从而形成一个闭合图形。

那么有什么方法可以阻止地图这样做吗?

地图片段的源代码

public class MapFragment extends Fragment {

GoogleMap gmaps;
ArrayList<LatLng>coo = ProcessLatLng.getCoordinates(); //Getting co-ordinates into Array List

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v=inflater.inflate(R.layout.map_fragment, container, false);
    prepareMap();
    return v;
}

private void prepareMap() {
    int i;
    if(gmaps == null)
        gmaps = ((com.google.android.gms.maps.MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    
    if(gmaps != null){
        PolylineOptions pop= new PolylineOptions();
        
        pop.width(5).color(Color.BLUE);
        
        for(i=0;i<coo.size();i++){
            pop.add(coo.get(i));
        }
                
        gmaps.addPolyline(pop);
        
        gmaps.addMarker(new MarkerOptions().position(coo.get(0)).title("Start"));
        gmaps.addMarker(new MarkerOptions().position(coo.get(coo.size()-1)).title("End"));
    
        gmaps.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(26.846785, 80.945591), 13));
    }
    
}

如果我没记错的话,好像又要加点了,像这样

第一次

(P1) ---- (P2) ---- (P3)

第二次

(P1) ---- (P2) ---- (P3) --- - (P1) ---- (P2) ---- (P3)

尝试将 ProcessLatLng.getCoordinates() 方法移动到 prepareMap 方法

尝试获取折线实例,并在片段消失之前移除

Polyline mPolyline;
private void prepareMap() {
    ....
    ArrayList<LatLng> coo = ProcessLatLng.getCoordinates();

    ....
    mPolyline = gmaps.addPolyline(pop)
}

我认为您的问题在于如何 code/set 您的折线。您可以在此处查看 document on how to use Polyline.

要创建折线,首先创建一个 PolylineOptions 对象并向其添加点。要向 PolylineOptions 对象添加点,请调用 PolylineOptions.add()。请注意,此方法采用可变数量的参数,因此您可以一次添加多个点(如果点已经在列表中,您也可以调用 PolylineOptions.addAll(Iterable<LatLng>))。

然后您可以通过调用 GoogleMap.addPolyline(PolylineOptions) 将折线添加到地图中。方法 returns 一个 Polyline 对象,您可以在以后更改折线。

另请查看此tutorial,了解如何使用折线。