2016-03-21 3 views
1

Мне нужно разрешить пользователю нарисовать маршрут (с использованием полилинии) с указанным радиусом дороги (визуально это было сделано с параметром «вес»).Как преобразовать полилинию с весом в полигон в листе?

Визуально это выглядит так:

enter image description here

Так мне интересно, как можно построить многоугольник вокруг этой ломаной линии с некоторым смещением? Как это:

enter image description here

ответ

1

Наконец-то я сделал это с библиотекой JSTS (https://www.npmjs.com/package/jsts).

Это легко:

//pathCoords should be an array of jsts.geom.Coordinate 
var pathCoords = []; 
var geometryFactory = new jsts.geom.GeometryFactory(); 

// on what distance new polygon should be built 
var distance = (meters * 0.0001)/111.12; 
var shell = geometryFactory.createLineString(pathCoords); 

// building a new polygon 
var polygon = shell.buffer(distance); 

// finally get your new polygon coordinates 
var polygonCoords = polygon.getCoordinates(); 
+0

Я попробовал JSTS-библиотеку на своем веб-приложении, и она отлично работает, мне нужно сделать то же самое на Android, но я не смог найти подобную библиотеку для Android или Java – AymanKun

1

Как вы сказали, вы можете использовать метод getLatLngs из L.Polyline доступа к координатам и использовать их для инициализации L.Polygon. Если вам необходимо получить доступ вес, который был установлен на ломаной линии вы можете сделать это, используя его параметры объекта:

var polyline = new L.Polyline([[25, -25], [25, 25], [-25, 25], [-25, -25]], { 
    weight: 10, 
}).addTo(map); 

var polygon = new L.Polygon(polyline.getLatLngs(), { 
    weight: polyline.options.weight 
}).addTo(map); 

Вы можете даже использовать весь параметры объекта, если у вас есть больше вещей, которые вы должны будете дублировать:

var polygon = new L.Polygon(polyline.getLatLngs(), polyline.options).addTo(map); 

с L.Polygon протягивается от L.Polyline, что не будет проблемой, так как она имеет те же параметры.

+0

Может быть, я не ясно, о вопросе, мне не нужно, чтобы применить стиль ломаной линии на полигон, мне нужно, чтобы построить один вокруг ломаной линии. Я прикрепил новую картину для лучшего понимания. –