diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNMapInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNMapInfo.java new file mode 100644 index 00000000..fa19c567 --- /dev/null +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNMapInfo.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.meteoinfo.data.mapdata.webmap; + +/** + * + * @author yaqiang + */ +public class GoogleCNMapInfo extends TileFactoryInfo { + + // + private String version = "1173"; + private String clientKey = null; + // + // + + /** + * Constructor + */ + public GoogleCNMapInfo() { + super("GoogleCNMap", 1, 17, 19, + 256, true, true, // tile size is 256 and x/y orientation is normal + "https://gac-geo.googlecnapps.cn/maps/vt?lyrs=m&x=%1$d&y=%2$d&z=%3$d", + "x", "y", "z"); + } + // + + // + @Override + public String getTileUrl(int x, int y, int zoom) { + zoom = this.getTotalMapZoom() - zoom; + String url = String.format(this.baseURL, x, y, zoom); + + return url; + } + // +} diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNSatelliteMapInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNSatelliteMapInfo.java new file mode 100644 index 00000000..fbfdfd86 --- /dev/null +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNSatelliteMapInfo.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.meteoinfo.data.mapdata.webmap; + +/** + * + * @author yaqiang + */ +public class GoogleCNSatelliteMapInfo extends TileFactoryInfo { + + // + private String version = "1173"; + private String clientKey = null; + // + // + + /** + * Constructor + */ + public GoogleCNSatelliteMapInfo() { + super("GoogleCNSatelliteMap", 1, 17, 19, + 256, true, true, // tile size is 256 and x/y orientation is normal + "https://gac-geo.googlecnapps.cn/maps/vt?lyrs=s&x=%1$d&y=%2$d&z=%3$d", + "x", "y", "z"); + } + // + + // + @Override + public String getTileUrl(int x, int y, int zoom) { + zoom = this.getTotalMapZoom() - zoom; + String url = String.format(this.baseURL, x, y, zoom); + + return url; + } + // +} diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNTerrainMapInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNTerrainMapInfo.java new file mode 100644 index 00000000..bdba27d6 --- /dev/null +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleCNTerrainMapInfo.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.meteoinfo.data.mapdata.webmap; + +/** + * + * @author yaqiang + */ +public class GoogleCNTerrainMapInfo extends TileFactoryInfo { + + // + private String version = "1173"; + private String clientKey = null; + // + // + + /** + * Constructor + */ + public GoogleCNTerrainMapInfo() { + super("GoogleCNTerrainMap", 1, 17, 19, + 256, true, true, // tile size is 256 and x/y orientation is normal + "https://gac-geo.googlecnapps.cn/maps/vt?lyrs=p&x=%1$d&y=%2$d&z=%3$d", + "x", "y", "z"); + } + // + + // + @Override + public String getTileUrl(int x, int y, int zoom) { + zoom = this.getTotalMapZoom() - zoom; + String url = String.format(this.baseURL, x, y, zoom); + + return url; + } + // +} diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleMapInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleMapInfo.java index 079c695c..83290a45 100644 --- a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleMapInfo.java +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleMapInfo.java @@ -19,11 +19,7 @@ public class GoogleMapInfo extends TileFactoryInfo { /** * Constructor */ - public GoogleMapInfo() { -// super("GoogleMap", 1, 17, 19, -// 256, true, true, // tile size is 256 and x/y orientation is normal -// "http://ecn.t%1$d.tiles.virtualearth.net/tiles/r%2$s?g=%3$s&mkt=%4$s&lbl=l1&stl=h&shading=hill&n=z%5$s", -// "x", "y", "z"); + public GoogleMapInfo() { super("GoogleMap", 1, 17, 19, 256, true, true, // tile size is 256 and x/y orientation is normal "http://mt2.google.cn/vt/lyrs=m&hl=%1$s&gl=cn&x=%2$d&y=%3$d&z=%4$d&s=Galil", @@ -43,18 +39,6 @@ public class GoogleMapInfo extends TileFactoryInfo { //String url = String.format(this.baseURL, x, y, zoom, this.getLanguage()); return url; } - -// @Override -// public String getTileUrl(int x, int y, int zoom, String language) { -// zoom = this.getTotalMapZoom() - zoom; -// int serverNum = this.getServerNum(x, y, 4); -// String key = this.tileXYToQuadKey(x, y, zoom); -// String ckey = this.clientKey; -// if (ckey == null) -// ckey = ""; -// String url = String.format(this.baseURL, serverNum, key, version, language, zoom, x, y); -// return url; -// } /// /// Converts tile XY coordinates into a QuadKey at a specified level of detail. /// diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleSatelliteMapInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleSatelliteMapInfo.java index 617c7871..5040acb5 100644 --- a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleSatelliteMapInfo.java +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/GoogleSatelliteMapInfo.java @@ -21,9 +21,6 @@ public class GoogleSatelliteMapInfo extends TileFactoryInfo { 256, true, true, // tile size is 256 and x/y orientation is normal "http://mt3.google.cn/vt/lyrs=s&hl=%1$s&gl=cn&x=%2$d&y=%3$d&z=%4$d&s=Galil", "x", "y", "z"); - //String url = "http://mt1.google.com/vt/lyrs=y&hl=%s&x=%d&y=%d&z=%d&s=Ga"; - //String url = "http://mt3.google.com/vt/lyrs=s&hl=%1$s&gl=cn&x=%2$d&y=%3$d&z=%4$d&s=Galil"; - //this.baseURL = url; } // // // // diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/WebMapProvider.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/WebMapProvider.java index 57956ee8..626f8b9f 100644 --- a/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/WebMapProvider.java +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/mapdata/webmap/WebMapProvider.java @@ -10,36 +10,49 @@ package org.meteoinfo.data.mapdata.webmap; */ public enum WebMapProvider { //SwingLabsBlueMarble, - OpenStreetMap, - OpenStreetMapQuestSatellite, - BingMap, - BingSatelliteMap, - BingHybridMap, - GoogleMap, - GoogleSatelliteMap, - GoogleTerrainMap, - GoogleHybridMap, - GoogleHybridTerrainMap, - AMap, - ASatelliteMap, - AHybridMap, - TencentMap, - GeoQMap, - GeoQGrayMap, - GeoQBlueMap, - GeoQWarmMap, - //BaiduMap, - //BaiduSatelliteMap, - //OviMap, - //OviSatelliteMap, - //OviTerrainMap, - //OviHybridMap, - YahooMap, - YahooSatelliteMap, - YahooHybridMap, - CMA_CVA_MAP, - CMA_VEC_MAP, - CMA_IMG_MAP, - //ArcGISImage - Custom + OpenStreetMap(new OpenStreetMapInfo()), + OpenStreetMapQuestSatellite(new OpenStreetMapQuestSatelliteInfo()), + BingMap(new BingMapInfo()), + BingSatelliteMap(new BingSatelliteMapInfo()), + BingHybridMap(new BingHybridMapInfo()), + GoogleMap(new GoogleMapInfo()), + GoogleSatelliteMap(new GoogleSatelliteMapInfo()), + GoogleTerrainMap(new GoogleTerrainMapInfo()), + GoogleHybridMap(new GoogleHybridMapInfo()), + GoogleHybridTerrainMap(new GoogleHybridTerrainMapInfo()), + GoogleCNMap(new GoogleCNMapInfo()), + GoogleCNSatelliteMap(new GoogleCNSatelliteMapInfo()), + GoogleCNTerrainMap(new GoogleCNTerrainMapInfo()), + AMap(new AMapInfo()), + ASatelliteMap(new ASatelliteMapInfo()), + AHybridMap(new AHybridMapInfo()), + TencentMap(new TencentMapInfo()), + GeoQMap(new GeoQMapInfo()), + GeoQGrayMap(new GeoQGrayMapInfo()), + GeoQBlueMap(new GeoQBlueMapInfo()), + GeoQWarmMap(new GeoQWarmMapInfo()), + YahooMap(new YahooMapInfo()), + YahooSatelliteMap(new YahooSatelliteMapInfo()), + YahooHybridMap(new YahooHybridMapInfo()), + CMA_CVA_MAP(new CMACvaMapInfo()), + CMA_VEC_MAP(new CMAVecMapInfo()), + CMA_IMG_MAP(new CMAImgMapInfo()); + + private final TileFactoryInfo tileFactoryInfo; + + /** + * Constructor + * @param tileFactoryInfo Tile factory info + */ + WebMapProvider(TileFactoryInfo tileFactoryInfo) { + this.tileFactoryInfo = tileFactoryInfo; + } + + /** + * Get tile factory info + * @return Tile factory info + */ + public TileFactoryInfo getTileFactoryInfo() { + return this.tileFactoryInfo; + } } diff --git a/meteoinfo-geo/src/main/java/org/meteoinfo/geo/layer/WebMapLayer.java b/meteoinfo-geo/src/main/java/org/meteoinfo/geo/layer/WebMapLayer.java index b8b6d187..981f4194 100644 --- a/meteoinfo-geo/src/main/java/org/meteoinfo/geo/layer/WebMapLayer.java +++ b/meteoinfo-geo/src/main/java/org/meteoinfo/geo/layer/WebMapLayer.java @@ -394,107 +394,7 @@ public class WebMapLayer extends MapLayer { * @param prov The web map provider */ public void setWebMapProvider(WebMapProvider prov) { - TileFactoryInfo info = null; - switch (prov) { -// case SwingLabsBlueMarble: -// setTileFactory(new CylindricalProjectionTileFactory()); -// setZoom(3); -// return; - case OpenStreetMap: - info = new OpenStreetMapInfo(); - break; - case OpenStreetMapQuestSatellite: - info = new OpenStreetMapQuestSatelliteInfo(); - break; - case BingMap: - info = new BingMapInfo(); - break; - case BingSatelliteMap: - info = new BingSatelliteMapInfo(); - break; - case BingHybridMap: - info = new BingHybridMapInfo(); - break; -// case OviMap: -// info = new OviMapInfo(); -// break; -// case OviSatelliteMap: -// info = new OviSatelliteMapInfo(); -// break; -// case OviTerrainMap: -// info = new OviTerrainMapInfo(); -// break; -// case OviHybridMap: -// info = new OviHybridMapInfo(); -// break; - case YahooMap: - info = new YahooMapInfo(); - break; - case YahooSatelliteMap: - info = new YahooSatelliteMapInfo(); - break; - case YahooHybridMap: - info = new YahooHybridMapInfo(); - break; - case GoogleMap: - info = new GoogleMapInfo(); - break; - case GoogleSatelliteMap: - info = new GoogleSatelliteMapInfo(); - break; - case GoogleTerrainMap: - info = new GoogleTerrainMapInfo(); - break; - case GoogleHybridMap: - info = new GoogleHybridMapInfo(); - break; - case GoogleHybridTerrainMap: - info = new GoogleHybridTerrainMapInfo(); - break; -// case BaiduMap: -// info = new BaiduMapInfo(); -// break; -// case BaiduSatelliteMap: -// info = new BaiduSatelliteMapInfo(); -// break; - case AMap: - info = new AMapInfo(); - break; - case ASatelliteMap: - info = new ASatelliteMapInfo(); - break; - case AHybridMap: - info = new AHybridMapInfo(); - break; - case TencentMap: - info = new TencentMapInfo(); - break; - case GeoQMap: - info = new GeoQMapInfo(); - break; - case GeoQGrayMap: - info = new GeoQGrayMapInfo(); - break; - case GeoQBlueMap: - info = new GeoQBlueMapInfo(); - break; - case GeoQWarmMap: - info = new GeoQWarmMapInfo(); - break; - case CMA_CVA_MAP: - info = new CMACvaMapInfo(); - break; - case CMA_VEC_MAP: - info = new CMAVecMapInfo(); - break; - case CMA_IMG_MAP: - info = new CMAImgMapInfo(); - break; -// case ArcGISImage: -// info = new ArcGISImageInfo(); -// break; - } - + TileFactoryInfo info = prov.getTileFactoryInfo(); if (info != null) { this.defaultProvider = prov; this.setLayerName("WebMap_" + info.getName()); diff --git a/meteoinfo-map/config.xml b/meteoinfo-map/config.xml index 128ef8e8..3dde8050 100644 --- a/meteoinfo-map/config.xml +++ b/meteoinfo-map/config.xml @@ -8,5 +8,5 @@
- +