我正在处理Open Layer V2.12地图。 我会在地图上绘制位置点。加载地图时,这些点不会显示。但是,缩小时,它将再次按相同的方法,并且将加载点。
Points are in green in the image
这是代码在控制器中初始加载地图时失败的代码:
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]));
这些值将按如下方式加载到var env中:
MaxX -8306659.542616 double,
MaxY 5263801.21133474 double,
MinX -10150932.160824 double,
MinY 4517775.81537526 double
Var左上角和var右下角的转换将无法正常运行。 左上角的值为:
[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
它将加载绿点。转换效果也很好。
请帮助我找出转换在左上角和右下角发生了什么,以及为什么该转换适用于zoomedout视图并加载点,以及为什么它不适用于页面加载后的初始视图(即地图特定部分的放大视图。