Leaflet: Размещение маркеров / кластеров в правой части карты - PullRequest
0 голосов
/ 25 октября 2018

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

Я попытался сделать это, найдя широту различных положений пикселей, каждый раз, когда карта перемещается, например, так:

var centerPoint = map.getSize().divideBy(2);

                    map.on('move', function(e) {

                            var name_array = [];

                            var multiplier_x = 0.95;
                            var multiplier_y = 0.8;
                            var index = 0;

                            layer_group.eachLayer(function (layer) {
                                if (layer.feature.properties.Name == 'Cycling' || layer.feature.properties.Name == 'Walking' || layer.feature.properties.Name == 'Driving' || layer.feature.properties.Name == 'Boating' || layer.feature.properties.Name == 'On a bus' || layer.feature.properties.Name == 'On a train'){

                                    if(!(layer.feature.properties.Name in name_array)){

                                        var targetPoint = centerPoint.add([centerPoint.x*multiplier_x, -centerPoint.y*(multiplier_y-index)]),
                                        targetLatLng = map.containerPointToLatLng(targetPoint);

                                        name_array[layer.feature.properties.Name] = targetLatLng;

                                        index += 0.2;
                                    }


                                    layer.setLatLng(name_array[layer.feature.properties.Name]);

                                }
                            });
                    });

Проблема в том, что хотя каждой форме транспортировки присваивается разныйВ любом случае, они, похоже, в любом случае объединяются и изменяются между различными кластерами при перемещении карты.Кроме того, при перемещении кисти карта, кажется, смещается все дальше и дальше влево, так как я пытаюсь подогнать карту к границам.

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

Код: http://bl.ocks.org/skov94/e44fcebd282fe5eb4c708e8ba0af95d6

1 Ответ

0 голосов
/ 04 сентября 2019

Чтобы построить их в заданном пикселе, основываясь на заданном значении широты:

...
var topLeft = map._getNewPixelOrigin(map.getCenter(), map.getZoom());
var targetPoint = map.project(map.getCenter(), map.getZoom()).subtract(topLeft);
var targetLatLng = map.unproject(targetPoint);
...

Постоянно вычисляя происхождение нового пикселя, это гарантирует, что пиксели и значения широковещания остаются выровненными даже при панорамировании

...