gpt4 book ai didi

google-maps - OpenLayers Google Maps Projection Problem w/KML

转载 作者:行者123 更新时间:2023-12-04 14:52:56 24 4
gpt4 key购买 nike

这是我第一次使用 stackoverflow 并使用 Openlayers 和 Google Maps。

我一直在浏览不同的论坛和网站,包括 OpenLayers.org,以解决我的问题。我已经对以下组合进行了搜索:openlayers、谷歌地图投影和球形墨卡托……但我还没有找到解决方案。

问题:当我放大和缩小 map 时,来自 Web 服务调用 (func setDataSource) 的 KML 数据正在发生变化。我的猜测是我的代码中的预测是错误的,或者可能是错误的放置。我对 map 投影没有任何背景,因此很难在线消化 map 术语:-(。有人可以帮忙吗?

   //start here
var options = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
numZoomLevels: 18,
maxResolution: 156543.0339,
maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
20037508, 20037508)};

//*map = new OpenLayers.Map('map');

map = new OpenLayers.Map('map', options);

var gphy = new OpenLayers.Layer.Google(
"Google Street",
{'sphericalMercator':true});

// Add the background images via WMS
var bglayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'}, {'reproject': true});

//map.addLayer(bglayer);
map.addLayers([gphy, bglayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());

map.zoomToMaxExtent(); //* Zoom all the way out, this command also initalizes the map
OpenLayers.Console.log("initialized");
}

function setDataSource() {
OpenLayers.Console.log("Setting data source to " + OpenLayers.Util.getElement('loc').value);
if (layer != undefined) {map.removeLayer(layer)};
if (selectControl != undefined) {map.removeControl(selectControl)};

// Encode the destination url as a parameter string.
var params = OpenLayers.Util.getParameterString({url:OpenLayers.Util.getElement('loc').value})

// Make the http request to the transformer, with the destination url as a parameter.
layer = new OpenLayers.Layer.GML("KML", transformerURL + params,
{
format: OpenLayers.Format.KML,
formatOptions: {
extractStyles: true,
extractAttributes: true,
maxDepth: 2,

//projection: new OpenLayers.Projection("EPSG:4326"),
}
});
map.addLayer(layer);

谢谢!!!

最佳答案

我解决了这个问题。我尝试使用 Vector 而不是 GML,如下所示:

layer = new OpenLayers.Layer.Vector("KML", {
projection: map.displayProjection,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: transformerURL + params,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true
})
})
});

我在这个日晷示例中找到了解决方案: http://openlayers.org/dev/examples/sundials-spherical-mercator.html :-) 希望这可以帮助任何有同样问题的人。

关于google-maps - OpenLayers Google Maps Projection Problem w/KML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1671293/

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