我正在構建使用自定義地圖平鋪的Android應用。我開始使用一套運行良好但只有有限縮放級別和麪積的設置。然後我切換到另一個覆蓋更多區域的拼貼集,但只是拒絕在Android中顯示。我可以在Javascript地圖中看到它們,並且LogCat中沒有錯誤,所以我不確定發生了什麼。自定義地圖平鋪在Chrome中工作但不是Andriod
是否只有某些Android地圖疊加層支持的圖像格式?
僅供參考,這裏有兩個瓦套:
這一件作品都在網絡上,並在Android中: http://mooproductions.org/vfrs/local.html
這一件作品在網絡上,但只是在Android上不會呈現: http://mooproductions.org/vfrs/national.html
下面是我使用提供瓦套他的代碼:
public class VfrTileProvider extends UrlTileProvider
{
// private static final String BASE_URL = "http://www.mooproductions.org/vfrs/%d/%d/%d.png";
// private static final String BASE_URL = "http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/%d/%d/%d.jpg";
private static final String BASE_URL = "http://vfrmap.com/20170914/tiles/vfrc/%d/%d/%d.jpg";
public VfrTileProvider (int width, int height)
{
super(width, height);
}
@Override
public URL getTileUrl (int x, int y, int zoom)
{
int reversedY = (1 << zoom) - y - 1;
// String tileUrl = String.format(Locale.US, BASE_URL, zoom, x, reversedY);
String tileUrl = String.format(Locale.US, BASE_URL, zoom, reversedY, x);
Log.d("Tile Provider", tileUrl);
URL url = null;
try { url = new URL(tileUrl); }
catch (MalformedURLException e) { e.printStackTrace(); }
return url;
}
}
您可以看到註釋掉了我使用該工作的瓦片集的其他URL。 tileUrl的創建有點不同,因爲這個新的tile集將x和y轉換爲它們的url。
這裏是我用來顯示自定義瓷磚代碼:
@Override
public void onMapReady (GoogleMap googleMap)
{
_map = googleMap;
_map.setMapType(GoogleMap.MAP_TYPE_NONE);
VfrTileProvider tileProvider = new VfrTileProvider(256, 256);
_map.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider));
Criteria criteria = new Criteria();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, REQUEST_LOCATION_PERMISSION);
return;
}
Location location = _locationManager.getLastKnownLocation(_locationManager.getBestProvider(criteria, false));
if (location != null)
{
_map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(location.getLatitude(), location.getLongitude()))
.zoom(10)
.build();
_map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
似乎問題不在圖像格式中,但在Android本機應用程序中使用自定義切片圖層:似乎本機應用程序無法顯示某些縮放級別的地圖,如果沒有切片並且不能自動跳過該圖層。也許你會從縮放級別開始顯示地圖,沒有自定義圖塊和Google地圖引擎就停留在它上面(在沒有自定義圖塊的縮放級別上)。另外,請添加一些源代碼以更好地理解問題。 –
我爲我知道有瓷磚的級別設置地圖的縮放級別。我也嘗試縮放通過我的服務器上的磁貼,然後退出,然後再回過頭,永遠不會「卡住」。 – CaseyB
事實上,我甚至在構建它們時註銷這些瓷磚的網址,我可以點擊它們,並在瀏覽器中打開它們。 – CaseyB