Я работаю над картой Открытых слоев 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
Загружает зеленые точки. Преобразование также работает хорошо.
Пожалуйста, помогите мне выяснить, что происходит при конвертации в верхнем левом и нижнем правом углу, а также почему конверсия работает для представления с уменьшенным масштабом и загружает точки и почему не работает для начального просмотра сразу после загрузки страницы, которая является увеличенный вид определенной части карты.
Просмотр при начальной загрузке карты на странице