我尝试使用自定义磁贴网址的Nutiteq SDK使用HTTPS,但它不起作用。 Nutiteq Maps SDK是否支持HTTPS?
答案 0 :(得分:1)
Nutiteq Maps SDK不支持跨平台API级别的内部HTTPS。确切地说,只有Windows Phone API版本支持它,但不支持其他平台(Android,iOS,Xamarin)。对于其他平台,您需要编写自定义DataSource。如果您将其基于现有的HTTPTileDataSource,则非常简单。您只需要使用自定义代码覆盖public TileData loadTile(MapTile tile)
方法,该代码在Java或ObjC API级别执行HTTP,并且这些自动支持HTTPS。
这是Java的最小类。在.NET / Xamarin和iOS中,它将非常相似:
public class MyHttpTileDataSource extends HTTPTileDataSource {
public MyHttpTileDataSource(int minZoom, int maxZoom, String baseURL) {
super(minZoom, maxZoom, baseURL);
}
public TileData loadTile(MapTile tile) {
String urlString = super.buildTileUrl(tile);
Log.debug("requesting tile: "+urlString);
Bitmap bmp = null;
try {
URL url = new URL(urlString);
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
return null;
}
return new TileData(BitmapUtils.createBitmapFromAndroidBitmap(bmp).compressToInternal());
}
}
使用相同的方法,您还可以使用其他自定义逻辑,例如添加HTTP标头以进行身份验证,控制自定义缓存等。