Пользовательские ГИС Маршруты - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть список точек ГИС, которые создают маршрутную сеть.

Моя цель - позволить агентам перемещаться из одной точки в другую, используя ТОЛЬКО сеть, которую я предоставил. Я не хочу использовать все возможные маршруты из точки А в точку Б, только те, по которым я могу следовать, основываясь на моей собственной сети.

Я знаю, что это может быть возможно путем реализации пользовательского RouteProvider, но я не смог понять, как это сделать.

Большое спасибо за помощь!

1 Ответ

1 голос
/ 11 апреля 2019

Я предполагаю, что у вас есть коллекция "местоположений" типа ArrayList, содержащая все ваши GISPoints, вот что вы делаете:

//create a new GIS network and attach it to your map element
GISNetwork network = new GISNetwork(map,"myNetwork");

//add all GISPoints to this network
for(GISPoint p:locations){
    network.add(p);
}

//somehow iterate through your points to create Routes between them (here just connect one after another, no cross connections)
for(int i=0;i<locations.size()-1;i++){

    //create segment (neccessary for Curve)
    GISMarkupSegment segment = new GISMarkupSegmentLine(locations.get(i).getLatitude(), locations.get(i).getLongitude(), locations.get(i+1).getLatitude(), locations.get(i+1).getLongitude());

    //create curves (neccessary for the GISRoutes)
    Curve<GISMarkupSegment> curve = new Curve<>();

    curve.addSegment(segment);  
    curve.initialize();
    network.add(new GISRoute(map,curve,locations.get(i), locations.get(i+1), true));
}
network.initialize(); 
...