У меня возникли проблемы с интеграцией 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;
}-*/;
Это вообще не работает. Более того, по какой-то причине наложение «Морской знак» отключено в селекторе слоев. Также я попытался использовать следующую функцию JSNI в качестве getURL для уровня TMS:
public static native JSObject getTileURL() /*-{
return $wnd.getTileURL;
}-*/;
Эта функция взята из http://map.openseamap.org/javascript/map_utils.js. Но тоже не повезло.
Любая помощь приветствуется.