Estou preso adicionando um ponto de vetor em lat / lon em cima de uma camada do Google no OpenLayers. O ponto está se movendo quando eu movo o mapa. Isso não acontece se eu substituir a camada do Google por uma camada no WGS84. Como posso consertar isso?
map = new OpenLayers.Map('map');
map.addControl(new OpenLayers.Control.LayerSwitcher());
var gmap = new OpenLayers.Layer.Google(
"Google Streets",
{numZoomLevels: 20}
);
var pointLayer = new OpenLayers.Layer.Vector("Point Layer");
map.addLayers([gmap,pointLayer]);
map.setCenter(new OpenLayers.LonLat(16.373056, 48.208333), 5);
var point = new OpenLayers.Geometry.Point(16.373056, 48.208333);
var pointFeature = new OpenLayers.Feature.Vector(point,null,null);
pointLayer.addFeatures([pointFeature]);
Eu tentei seguir http://docs.openlayers.org/library/spherical_mercator.html, mas sem sucesso.
openlayers-2
javascript
underdark
fonte
fonte
Respostas:
Você precisa adicionar algumas alterações para obter os resultados necessários:
Código de trabalho abaixo:
fonte
Este é um problema de projeção, você deve transformar a projeção do ponto na camada base (mapa do Google aqui). O código a seguir deve funcionar
Isso ocorre porque a projeção padrão do google map (esférico mercator) é 900913 e a de um ponto simples em lonlat em 4326.
Verifique se o ponto está definido como (longitude, latitude) e não como (latitude, longitude).
fonte
Ao trabalhar com a API JS do Google Maps, você deve ter cuidado com a versão. Não há padrão para ir com a versão de desenvolvimento Google JS Maps API. Verifique a página: http://code.google.com/apis/maps/documentation/javascript/basics.html#Versioning
E a equipe JS do Google Maps também corrige bugs. Verifique http://code.google.com/p/gmaps-api-issues/wiki/JavascriptMapsAPIv3Changelog
No futuro, mencione a versão da API do Google Maps na pergunta. A v3.3 não teve problemas com o Openlayers, principalmente usado pelos desenvolvedores.
fonte
Eu acho que é uma questão de projeção.
Você já tentou relatar o centróide do ponto quando o mapa se move? Você pode ver se algo está mudando.
Mas pelo que posso ver do seu código, você adicionaria o ponto WGS84 a um corordsys diferente
fonte