TileOverlay无法在Google Maps Android应用中呈现切片

时间:2018-04-13 13:52:40

标签: android google-maps

我有一个Android应用程序,可以从URL加载切片。根据Google的代码示例,我有以下功能:

@Override
public void onMapReady(GoogleMap googleMap) {
    mapView = googleMap;
    mapView.setMapType(GoogleMap.MAP_TYPE_NORMAL);

    LatLng baseLocation = new LatLng(37.745446, -122.459264);
    mapView.addMarker(new MarkerOptions().position(baseLocation).title("Marker"));
    mapView.moveCamera(CameraUpdateFactory.newLatLng(baseLocation));
    mapView.moveCamera(CameraUpdateFactory.zoomTo(5));

    TileProvider tileProvider = new UrlTileProvider(256, 256) {
        @Override
        public synchronized URL getTileUrl(int x, int y, int z) {
            String formattedUrl = String.format(Locale.US, TILE_SERVER_URL, x, y, z);
            URL url = null;

            try {
                url = new URL(formattedUrl);
                Log.d("TILE_URL", url.toString());
            }
            catch (MalformedURLException ex) {
                throw new AssertionError(ex);
            }
            return url;
        }
    };

    tiles = mapView.addTileOverlay(new TileOverlayOptions().zIndex(0.0f).tileProvider(tileProvider).visible(true));
}

这已在我们的iOS版本中实现,并按预期工作。此外,我已经验证在此函数中返回到控制台的URL肯定会导致返回平铺图像。

我主要是iOS用户,需要一些见解。地图上没有瓷砖显示。我已经使用了瓷砖叠加层的zIndex而没有效果。

有人可以在这里提供一些建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我假设您遵循Google的TileOverlayDemoActivity example:如果是这种情况,则必须将URL格式协议从 http 更新为 https ,如下所示:

private static final String MOON_MAP_URL_FORMAT =
        "https://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/%d/%d/%d.jpg";

我花了很长时间才弄清楚,希望对您有所帮助。