我在Windows Forms C#应用程序中使用SharpMap的MapBox对象,我似乎无法找到如何使缩放级别工作。 MapBox对象位于TabControl对象中。
在我的应用程序中调用主要的InitializeComponent()之后调用此类。
public void InitializeMap(SharpMap.Forms.MapBox mapBox)
{
mapBox.Map.BackgroundLayer.Add(new SharpMap.Layers.TileAsyncLayer(
new BruTile.Web.OsmTileSource(), "OSM"));
mapBox.Map.Zoom = 10; //
mapBox.Refresh();
}
无论为mapBox.Map.Zoom属性写入什么值,它始终都是相同的高缩放级别。
另一方面,如果我使用mapBox.Map.ZoomToExtents()
调用,它会正确缩放到OSM图层的范围。
我想我做错了一件简单的事,但我似乎无法找到问题所在。
答案 0 :(得分:0)
mapBox.Map.Zoom
始终与mapBox.Map.Envelope.Width
相同。
不要像这样设置缩放,而是尝试使用mapBox.Map.ZoomToBox(new GeoAPI.Geometries.Envelope(-5.0, 5.0, -5.0, 5.0))
。地图将被定位和缩放,以便整个信封都在地图内。
我的示例中的信封宽度为10,但如果您的地图宽度高于mapBox.Map.Zoom
,则 FSDirectory index = FSDirectory.open(Paths.get(indexLoc));
IndexReader reader = DirectoryReader.open(index);
LeafReaderContext leaf = leaves.get(0);
LeafReader atomicReader = leaf.reader();
KNearestNeighborDocumentClassifier knn = new KNearestNeighborDocumentClassifier(atomicReader, BM25, null, 10, 0, 0, "Topics", field2analyzer, "Text");
将大于此值,因为(如上所述)其值与宽度相同地图的可见部分。