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 @@
-
+