openlayers 2.12 точки на карте не загружаются при событии Load - PullRequest
0 голосов
/ 15 марта 2019

Я работаю над картой Открытых слоев V2.12. Я строю точки на карте. При загрузке карты точки не отображаются. Но при уменьшении он снова попадает в тот же метод, и точки загружаются.

Точки зеленого цвета на изображении

Вот код, в котором происходит сбой при начальной загрузке карты в контроллер:

var env = new Envelope(filterGeo.MinX, filterGeo.MaxX, filterGeo.MinY, filterGeo.MaxY);

var topLeft = transformer.TransformLeft(env.TopLeft().ToDoubleArray());


var bottomRight = transformer.TransformLeft(env.BottomRight().ToDoubleArray());

var tranenv = new Envelope(new Coordinate(topLeft[0], topLeft[1]),

new Coordinate(bottomRight[0], bottomRight[1]));

Значения будут загружены в переменную следующим образом:

MaxX    -8306659.542616     double,
MaxY    5263801.21133474    double,
MinX    -10150932.160824    double,
MinY    4517775.81537526    double

Преобразование в Var topleft и var bottomright не будет работать должным образом. Значения в верхней части:

        [0] -1129996599219.9919 double
        [1] NaN double

Значения в правом нижнем углу:

        [0] -924693110477.1 double
        [1] NaN double

Я не уверен насчет преобразования, которое происходит в верхнем и нижнем правом направлении.

public static Coordinate TopLeft(this Envelope self)
{
   return new Coordinate(self.MinX, self.MaxY);
}
 public static Coordinate BottomRight(this Envelope self)
        {
            return new Coordinate(self.MaxX, self.MinY);
        }

После преобразования он выдаст исключение в методе следующим образом: Пример: {"точки должны образовывать замкнутую линейную строку"}

public void SpatialFilterAction(int userId, IEnumerable<SearchFilter> filters, IEnvelope envelope, Action<SurveyFeature> action)
        {
            using (var session = Session.SessionFactory.OpenStatelessSession())
            {
                session.CreateCriteria<SurveyFeature>("sf")
                    .AddFilterSubQuery(userId, filters)
                    .Add(SpatialRestrictions.Filter("sf.Location", envelope, 0))
                    .List(new ActionableList<SurveyFeature>(action));
            }
        }

Это то, что вызывает вышеуказанный метод:

 _featureRepository.SpatialFilterAction(User.Id(), AdvancedSearch.GetFilters(), filterGeo, feature =>
                                {
                                    feature.Geometry = feature.Location.Project(transformer.TransformAllRight);
                                    featureCollection.Add(feature.ToWFSFeature());
                                    featureCount++;
                                    pointCollection.Add(feature.Location);
                                });

Но пока я уменьшаю карту, как показано ниже, она попадает в тот же метод: ZoomedOutView

Загружает зеленые точки. Преобразование также работает хорошо.

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

Просмотр при начальной загрузке карты на странице

...