使用Arcgis for Android进行路径分析,首先构建网络数据集,并将其发布为地图服务,然后使用RouteTask.createOnlineRouteTask()方法去加载发布的地图服务。进行路径分析时要实现RouteParameters接口,构造完参数后使用solve()方法执行路径分析。具体代码如下:
RouteParameters rp = rt
.retrieveDefaultRouteTaskParameters();
NAFeaturesAsFeature naferture = new NAFeaturesAsFeature();
StopGraphic stopGraphic1 = new StopGraphic(mLocation);
StopGraphic stopGraphic2 = new StopGraphic(p);
naferture.setFeatures(new Graphic[] { stopGraphic1,
stopGraphic2 });
naferture.setCompressedRequest(true);
rp.setStops(naferture);
rp.setOutSpatialReference(mapSR);
try {
// 执行路径分析
mResult = rt.solve(rp);
runOnUiThread(new MyRun(mResult));
注意在至执行路径分析时,要设置停靠点,使用StopGraphic类的实例对象存储停靠点。此外,这过程还涉及到空间参考系的问题。执行网路径分析后要将结果显示到地图上来就涉及到GIS中的制图表现。使用GraphicsLayer存储制图表现,使用Symbol和SimpleLineSymbol对停靠点符号和路径进行符号表示。主要代码如下:
private Symbol stopSymbol;// 停靠点的符号
private SimpleLineSymbol hiderSym;// 查询到的路径的片段,设置透明将其“隐藏”
private SimpleLineSymbol showSym;// 当路径片段被选中的时候,显示的符号
stopSymbol = new SimpleMarkerSymbol(Color.RED, 6,
SimpleMarkerSymbol.STYLE.CIRCLE);
hiderSym = new SimpleLineSymbol(Color.WHITE, 3);
// 设置成透明,使其处于“隐藏”状态
hiderSym.setAlpha(100); showSym = new SimpleLineSymbol(Color.RED, 4);
结果如下图所示:
注意,执行路径分析不能在主线程中进行,所以需开辟新线程执行此操作。