Quero sobrepor alguns dados cuja projeção é WGS-84 na camada de mapa do Google no OpenLayers. Mas eu simplesmente não posso fazê-los no lugar certo. Eu fiz o seguinte:
map = new OpenLayers.Map('map', {
numZoomLevels: 20,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG: 4326")
});
googlelayer = new OpenLayers.Layer.Google("Google street", {sphericalMercator: true});
map.addLayer(googlelayer);
veclayer = new OpenLayers.Layer.Vector("vector", {
projection: map.displayProjection
};
var geojson_format = new OpenLayers.Format.GeoJSON();
veclayer.addFeatures(geojson_format.read(jsonData));
Embora eu tenha atribuído veclayer
na projeção 4326, mas ainda seja interpretada como 900913, e o sistema de coordenação de exibição também seja 900913, embora eu defina displayProjection como 4326. Que erro eu cometi?
preFeatureInsert
meios, de qualquer forma, eu não posso encontrá-lo no doc oficial API ~Você tem um espaço após os dois pontos.
Projection("EPSG: 4326")
realmente deveria haverProjection("EPSG:4326")
, não havia espaço antes4326
.fonte
Publiquei meu antigo snippet de código. Lembro que o clou está nas projeções. O addTransform deve resolver seu problema. (proj4)
fonte
Você pode ficar lá porque está procurando uma representação vetorial ligeiramente deslocada no Google Maps, enquanto está bem em outras camadas de base e transformar EPSG: 4326 em EPSG: 900913 ou EPSG: 3857 não resolve tudo.
Há um erro no Google Maps que não avalia bem o tamanho da div ao iniciar o objeto OpenLayers Map, se ainda não estiver visível. Portanto, após as chamadas transform () e redesenhar (), talvez seja necessário
myMapObject.updateSize();
informar o Google sobre a proporção real de seu mapa na tela.Se você estiver procurando por uma solução genérica para transformar camadas de uma projeção em outra, poderá usar esta função:
Et voilà!
fonte
Para o Yahoo, você pode tentar estas opções:
fonte