osmdroid – 更高的缩放级别?

我正在尝试使用osmdroid库实现MapView。

然而,目前我似乎可以放大的最远不足以达到我的目的。

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Setup map view: mapView = new MapView(this, 256); setContentView(mapView); // Parse parameters Intent intent = getIntent(); center = intent.getDoubleArrayExtra(INITIAL_CENTER); multiTouch = intent.getBooleanExtra(MULTI_TOUCH, DEFAULT_MULTI_TOUCH); zoomButtons = intent.getBooleanExtra(ZOOM_BUTTONS, DEFAULT_ZOOM_BUTTONS); zoomLevel = intent.getIntExtra(ZOOM_LEVEL, DEFAULT_ZOOM_LEVEL); if (center == null) center = DEFAULT_INITIAL_CENTER; // Applying parameters mapView.setClickable(true); mapView.setMultiTouchControls(multiTouch); mapView.setBuiltInZoomControls(zoomButtons); mapView.getController().setZoom(zoomLevel); mapView.getController().setCenter(new GeoPoint(center[0], center[1])); mapView.setTileSource(TileSourceFactory.MAPQUESTOSM); mapView.setMaxZoomLevel(18); // Show current location coordinates Toast.makeText( getApplicationContext(), "Latitude:\t\t" + center[0] + "\n" + "Longitude:\t" + center[1], Toast.LENGTH_LONG).show(); // Offline maps: mapView.setUseDataConnection(true); } 

在这里输入图像说明

有反正放大进一步(我已经尝试设置缩放级别为18)?

Solutions Collecting From Web of "osmdroid – 更高的缩放级别?"

最大缩放级别由您正在使用的图块源决定。 如果您使用MAPNIK提供的在线拼贴来源之一,则最大缩放级别设置为18,因为这是拼贴源创build拼贴的最大缩放级别。 如果您想进一步放大,则需要使用提供更高缩放级别图块的图块源。

如果您只是想覆盖最大缩放级别而不考虑tile源的缩放级别,那么您可以简单地调用:

 mapView.setMaxZoomLevel(19); 

将最大缩放级别设置为19,但再次在该缩放级别上,图块源可能只是没有图块。

对于任何寻求解决更好的瓷砖缩放的人来说,osmdroid现在都带有内置的函数:

 setTilesScaledDpi(boolean) 

该函数位于MapView类中。

我今天在使用新的HTC One时遇到了类似的问题。 由于屏幕密度非常高,最大缩放级别使得地图图块以使得街道名称和位置几乎不可读的方式(我正在使用OpenStreetMap)。 我发现的最佳解决scheme是缩放图块源中的图像:

 final float scale = getBaseContext().getResources().getDisplayMetrics().density; final int newScale = (int) (256 * scale); String[] OSMSource = new String[2]; OSMSource[0] = "http://a.tile.openstreetmap.org/"; OSMSource[1] = "http://b.tile.openstreetmap.org/"; XYTileSource MapSource = new XYTileSource("OSM", null, 1, 18, newScale, ".png", OSMSource); map.setTileSource(MapSource); 

根据屏幕密度改变比例是一个相对较好的解决scheme,只要添加一些应急措施以防止瓦片变得太模糊。

顺便说一句,这不是我的解决scheme,我发现它在Github上的OSMDROID问题。 感谢stefangab95

编辑 :如果屏幕密度太高,那么缩放瓷砖也会产生使pathpath(使用RoadManager生成)不可见的负面影响。 此问题已logging在OSMBonusPack网站上的问题- 没有绘制折线 。 目前还没有解决scheme。