在 Google Tile Wrapper 示例之后,我使用 osmdroid GoogleTilesOverlay 实现了一个 google MapView。
com.google.android.maps.MapView googleMapView;
org.osmdroid.google.wrapper.MapView osmdMapView;
org.osmdroid.google.overlay.GoogleTilesOverlay tiles;
final MapView googleMapView = (com.google.android.maps.MapView.MapView) findViewById(R.id.plan_mapview);
osmdMapView = new org.osmdroid.google.wrapper.MapView(gMapView);
// snip Provider instantiation etc.
overlayTiles = new GoogleTilesOverlay(provider, getApplicationContext());
gMapView.getOverlays().add(overlayTiles);
静止时,覆盖图块渲染良好,但是在缩放(捏合或通过控件)时,底层谷歌图块会调整大小并被平滑替换,但 osmd 覆盖层不会调整大小。
结果:当放大仍然在视图中的图块时,它们开始重叠。相反,当缩小时,每个图块之间的间隙变得可见。
在我看来,第一步是对 GoogleTilesOverlay 进行子类化,以便我可以修改 draw() 方法。但是然后呢?
我已经用谷歌搜索了一些指向:a)在动画中间时短路draw()方法b)使用Projector / Matrix类来确定如何动态缩放覆盖
不幸的是,我不是 Android API 方面的专家,所以不确定该走哪条路……然后是如何最好地实施解决方案。