Google Map API 3 + WMS

问题描述 投票:3回答:2

[有人可以给我最好的主意,如何在Google地图上放置WMS图层,我的图层很多,样式也很多。我在StackOverflow上研究了许多问题和解答,但我对如何管理多种样式和层一无所知。我想放入我的JQuery代码。

javascript jquery google-maps-api-3 wms
2个回答
11
投票

这里有一个很好的例子:http://www.sumbera.com/lab/GoogleV3/tiledWMSoverlayGoogleV3.htm

这里有两种层:

  1. 底层的基础层
  2. 在所有其他层之上的覆盖的半透明层

((注意:在上面的示例中,他们仅将WMS用于情况2,但您当然也可以将其用于情况1,因为两者的接口(对象google.maps.ImageMapType)都是相同的)]

基本上,使用以下方法添加“基础层”:

map.mapTypes.set('OSM', new google.maps.ImageMapType({ ... }));

要添加叠加层,请使用:

map.overlayMapTypes.push(new google.maps.ImageMapType({ ... }));

要在地图类型控件中添加图层,请在创建地图时使用选项:

mapTypeControlOptions: {
    mapTypeIds: [
        'OSM', 
        google.maps.MapTypeId.ROADMAP, 
        google.maps.MapTypeId.SATELLITE, 
        google.maps.MapTypeId.HYBRID, 
        google.maps.MapTypeId.TERRAIN
    ],
    style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}

上面的例子很好地说明了这一点。至于WMS图层的样式,这非常复杂,我也输入a question about this here。祝你好运!


0
投票

<!DOCTYPE html>
<html>
  <head>
    <title>WMS and Google Maps</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var EXTENT = [-Math.PI * 6378137, Math.PI * 6378137];

      function xyzToBounds(x, y, z) {
        var tileSize = (EXTENT[1] * 2) / Math.pow(2, z);
        var minx = EXTENT[0] + x * tileSize;
        var maxx = EXTENT[0] + (x + 1) * tileSize;
        // remember y origin starts at top
        var miny = EXTENT[1] - (y + 1) * tileSize;
        var maxy = EXTENT[1] - y * tileSize;
        return [minx, miny, maxx, maxy];
      }

      var getTileUrl = function(coordinates, zoom) {
        return (
          "https://www.mrlc.gov/geoserver/NLCD_Land_Cover/wms?" +
          "&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1" +
          "&LAYERS=mrlc_display%3ANLCD_2016_Land_Cover_L48" +
          "&FORMAT=image%2Fpng" +
          "&SRS=EPSG:3857&WIDTH=256&HEIGHT=256" +
          "&BBOX=" +
          xyzToBounds(coordinates.x, coordinates.y, zoom).join(",")
        );
      };

      function initMap() {
        var map = new google.maps.Map(document.getElementById("map"), {
          zoom: 12,
          center: { lat: 37.783, lng: -122.403 }
        });

        var landcover = new google.maps.ImageMapType({
          getTileUrl: getTileUrl,
          name: "Landcover",
          alt: "National Land Cover Database 2016",
          minZoom: 0,
          maxZoom: 19,
          opacity: 0.75,
        });
        map.overlayMapTypes.push(landcover);
      }

    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?&callback=initMap">
    </script>
  </body>
</html>

您可以在此处阅读详细信息:https://medium.com/@justinwp/wms-layer-on-google-maps-1087a43d7556

© www.soinside.com 2019 - 2024. All rights reserved.