0

我尝试了使用 HTTPS 的自定义磁贴 URL 的 Nutiteq SDK,但它不起作用。Nutieq Maps SDK 是否支持 HTTPS?

4

1 回答 1

1

Nutieq Maps SDK 不支持跨平台 API 级别的内部 HTTPS。确切地说,只有 Windows Phone API 版本支持,其他平台(Android、iOS、Xamarin)不支持。对于其他平台,您需要编写自定义数据源。如果您基于现有的 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 标头、控制自定义缓存等。

于 2015-06-16T15:12:28.033 回答