将OpenSeaMap集成到GWT OpenLayers中

活力型

我在将OpenSeaMap集成到GWT应用程序时遇到问题我遵循了他们的示例以及GWT-OpenLayers TMS的示例这是我的代码:

private void initMap(MapView map) {
    TMSOptions seamarkOptions = new TMSOptions();
    seamarkOptions.setType("png");
    seamarkOptions.setGetURL(getMyUrl());
    seamarkOptions.setNumZoomLevels(18);
    seamarkOptions.setIsBaseLayer(false);
    seamarkOptions.setDisplayOutsideMaxExtent(true);

    map.addLayer(OSM.Mapnik("OpenStreetMap"));
    map.addLayer(new TMS("Seamark", "http://t1.openseamap.org/seamark/", seamarkOptions));
}

private static native JSObject getMyUrl() /*-{
    function get_my_url(bounds) {
        var res = this.map.getResolution();
        var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
        var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
        var z = this.map.getZoom();
        var limit = Math.pow(2, z);
        if (y < 0 || y >= limit) {
            return null;
        } else {
            x = ((x % limit) + limit) % limit;
            url = this.url;
            path= z + "/" + x + "/" + y + "." + this.type;
            if (url instanceof Array) {
                url = this.selectUrl(path, url);
            }
            return url+path;
        }
    }

    return get_my_url;
}-*/;

它根本不起作用。甚至更多-由于某种原因,在“图层”选择器中禁用了“ Seamark”叠加层。我也尝试过使用以下JSNI函数作为TMS层的getURL:

public static native JSObject getTileURL() /*-{
    return $wnd.getTileURL;
}-*/;

该函数来自http://map.openseamap.org/javascript/map_utils.js,但也没有运气。

任何帮助表示赞赏。

活力型

此问题的原因是nullMap对象的maxExtent属性。初始化如下:

mapWidget = new MapWidget("100%", "100%", new MapOptions());

我已更新为以下内容:

MapOptions defaultMapOptions = new MapOptions();
defaultMapOptions.setMaxExtent(new Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34));

mapWidget = new MapWidget("100%", "100%", defaultMapOptions);

现在可以了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将OpenSeaMap集成到Android应用程序中

来自分类Dev

如何将Dagger2集成到GWT应用程序中?

来自分类Dev

将XAML页面集成到Storyboard中

来自分类Dev

将PayPal功能集成到Java中

来自分类Dev

将GeckoView集成到Android中

来自分类Dev

将WinForms项目集成到WPF中

来自分类Dev

将DexGuard集成到Android Studio中

来自分类Dev

将phpseclib集成到Laravel 5中

来自分类Dev

将Bootstrap集成到Grails中

来自分类Dev

将Sagepay集成到Zend中

来自分类Dev

将BBCode集成到Laravel 4中

来自分类Dev

将html集成到Django模板中

来自分类Dev

将Cuda集成到C ++文件中

来自分类Dev

将lightadmin集成到Wildfly中

来自分类Dev

将SpamAssassin集成到Postfix中

来自分类Dev

将GPS集成到JavafxPorts中

来自分类Dev

将Lucene集成到play框架中

来自分类Dev

将 Chili 发布集成到 Symfony 中

来自分类Dev

将 virtualenvwrapper 集成到 Pycharm 中

来自分类Dev

OpenLayers 3:将地图缩放到数组中的坐标

来自分类Dev

将CSS用于OpenLayers中的矢量层样式

来自分类Dev

将CSS用于OpenLayers中的矢量层样式

来自分类Dev

将OpenLayers 3与Cesium Viewer集成

来自分类Dev

将FacebookSDK集成到Android Studio中的Android中

来自分类常见问题

将地图集成到片段而不是活动中

来自分类Dev

将Grunt集成到Rails资产管道中

来自分类Dev

将LocustIO集成到Jenkins的性能插件中

来自分类Dev

如何将Luis集成到Bot Builder中

来自分类Dev

如何将angular js集成到grails 2.3.4中?