Tif*_*any 6 google-maps projection openlayers proj4js
这是我第一次使用stackoverflow并使用Openlayers和Google Maps.
我一直在浏览不同的论坛和网站,包括OpenLayers.org,以解决我的问题.我已经完成了以下组合的搜索:openlayers,谷歌地图投影和球形墨卡托...但我还没有找到解决方案.
问题:当我放大和缩小地图时,来自Web服务调用(func setDataSource)的KML数据正在移动.我的猜测是我的代码中的预测错误或错误放置.我没有关于地图投影的任何背景,因此很难在线消化绘图术语:-(.有人可以帮忙吗?
//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);
Run Code Online (Sandbox Code Playgroud)
谢谢!!!
我解决了这个问题.而不是GML,我尝试使用Vector,而不是这样:
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
})
})
});
Run Code Online (Sandbox Code Playgroud)
我在这个日程示例中找到了解决方案:http://openlayers.org/dev/examples/sundials-spherical-mercator.html :-)希望这可以帮助任何人解决同样的问题.
| 归档时间: |
|
| 查看次数: |
7995 次 |
| 最近记录: |