gpt4 book ai didi

javascript - 从 Google map 引擎发布的 WMS 未显示

转载 作者:行者123 更新时间:2023-11-28 01:16:40 25 4
gpt4 key购买 nike

我是 JS 和 Google Maps API 的新手...我获取了一些 JS 代码,希望能够显示我在 Google Maps Engine 中创建的 WMS。

我被下面的代码困住了,因为 WMS 似乎没有显示任何内容。

我迷失的是 Google Maps Engine WMS 的 baseURL 和我使用该特定 map 的 Assets ID 的“layers”变量。我在这里很迷路,希望得到任何帮助。

function WMSGetTileUrl1(tile, zoom) {
var projection = window.mapA.getProjection();
var zpow = Math.pow(2, zoom);
var ul = new google.maps.Point(tile.x * 256.0 / zpow, (tile.y + 1) * 256.0 / zpow);
var lr = new google.maps.Point((tile.x + 1) * 256.0 / zpow, (tile.y) * 256.0 / zpow);
var ulw = projection.fromPointToLatLng(ul);
var lrw = projection.fromPointToLatLng(lr);

//The user will enter the address to the public WMS layer here. The data must be in WGS84
var baseURL = "https://mapsengine.google.com/17306057122701807517-17234028967417318364-4/wms/?";
var version = "1.1.1";
var request = "GetMap";
var format = "image/jpeg"; //type of image returned or image/jpeg

//The layer ID. Can be found when using the layers properties tool in ArcMap
var layers = "17306057122701807517-17234028967417318364";
var srs = "EPSG:4326"; //projection to display. This is the projection of google map. Don't change unless you know what you are doing.
var bbox = ulw.lng() + "," + ulw.lat() + "," + lrw.lng() + "," + lrw.lat();

//the size of the tile, must be 256x256
var width = "256";
var height = "256";

var styles = "default";

//Establish the baseURL.
var url = baseURL + "version=" + version + "&request=" + request + "&Layers=" + layers + "&Styles=" + styles + "&SRS=" + srs + "&BBOX=" + bbox + "&width=" + width + "&height=" + height + "&format=" + format;

return url;
}

最佳答案

您的代码有两个问题。第一个是显而易见的。您正在使用 map ID 作为图层 ID。它们是两个不同的东西。在 GME 中,进入图层详细信息屏幕,单击“访问链接”并选择图层 ID。它将从 17306057122701807517 开始 - 但后半部分会有所不同。另外,不要忘记在末尾附加 -4。这表明它是已发布的图层,而不是预览中的图层。提示:如果将其设为-2,您可以看到预览版本,例如更新但未发布的一个。

现在来说第二个问题,这个问题更加微妙。上例中使用的 EPSG 代码是 4326,即 WGS84,而 Google map 在 Google Web Mercator 中发布,即 EPSG:900913。您不能只更换 EPSG 代码,因为使用的坐标系不同。这实际上意味着,除非您重写代码来生成边界框,否则您将无法使用该 javascript。

我建议使用 http://www.sigacts.com/html5/google-maps-api-with-wms-overlay/ 中的代码它使用正确的坐标系。该示例实际上也使用了 MapsEngine map 。只需下载代码并修改 vars.js 以适应即可。我已经下载并验证了它也适用于我自己的 map ,因此您应该不会有任何问题。提示:代码有点旧,引用了 Earthbuilder.google.com,这是 MapsEngine 的旧名称。确保您更改了域名和 map ID。

编辑:WMS 是将内容添加到 map 上的一种笨拙方式。您应该使用 MapsEngineLayer它是 Google Maps API 的一部分,或者对于更细粒度的事情,您可以使用 Maps Engine API,它允许您执行属性过滤、空间查询等。

关于javascript - 从 Google map 引擎发布的 WMS 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23759634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com