Openseamap в Google Maps Wms Ошибка для глубинного слоя Gebco - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь разместить несколько слоев на основе OSM в Картах Google. Название проекта: openseamap . До сих пор он работал нормально до масштабирования 8. Но после масштабирования 8 я получаю ошибку 400, которая говорит: «400: X, значения Y для индекса фрагмента были вычислены как {120.99999999902559, 155.83725643764348}, который должен быть округлен до {121, 156 } и превышает порог в 10%. Возможно, клиент использует неправильное происхождение? "

var gebcoLayer =
                new google.maps.ImageMapType(
                    {

                        getTileUrl: function (coord, zoom) {
                            // Compose URL for overlay tile
                            var tilesPerGlobe = 1 << zoom;
                            var x = coord.x % tilesPerGlobe;
                            if (x < 0) {
                                x = tilesPerGlobe + x;
                            }
                            var s = Math.pow(2, zoom);
                            var twidth = 256;
                            var theight = 256;


                            var gBl = map.getProjection().fromPointToLatLng(new google.maps.Point(x * twidth / s, (coord.y + 1) * theight / s)); // bottom left / SW
                            var gTr = map.getProjection().fromPointToLatLng(new google.maps.Point((x + 1) * twidth / s, coord.y * theight / s)); // top right / NE



                            var mercator1 = Conv.ll2m(gBl.lng(), gBl.lat());
                            var mercator2 = Conv.ll2m(gTr.lng(), gTr.lat());


                            var bbox2 = mercator1.x + "," + mercator1.y + "," + mercator2.x + "," + mercator2.y;                           


                            var url = "http://osm.franken.de:8080/geoserver/gwc/service/wms?LAYERS=gebco_2014&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A900913&BBOX=" + bbox2 + "&WIDTH=256&HEIGHT=256";
                            return url;
                        },
                        tileSize: new google.maps.Size(256, 256),
                        name: "Gebco",
                        isPng: true,
                        //maxZoom: 18,
                        opacity: 0.3,
                    });
            map.overlayMapTypes.insertAt(0, gebcoLayer);

Вместо того, чтобы вводить весь код здесь, я создал скрипку. Вот моя скрипка!

Как вы можете видеть в скрипте, все работает нормально, если значение масштабирования меньше 8. Я не мог понять, что вызывает эту ошибку. Я предполагаю, что разница в уровне масштабирования между OSM и Google? или как рассчитать значение bbox?

...