(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,了解如何使用折线。
我一直在开发一个基于地图的应用程序。在那里,我在 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,了解如何使用折线。