Utknąłem dodając punkt wektorowy w linii Lat / Lon na warstwie Google w OpenLayers. Punkt przesuwa się, kiedy przesuwam mapę. Nie stanie się tak, jeśli zastąpię warstwę Google warstwą w WGS84. Jak mogę to naprawić?
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]);
Próbowałem śledzić http://docs.openlayers.org/library/spherical_mercator.html, ale bez powodzenia.
openlayers-2
javascript
podmrok
źródło
źródło
Odpowiedzi:
Musisz dodać kilka zmian, aby uzyskać wymagane wyniki:
Działający kod poniżej:
źródło
Jest to problem z rzutowaniem, musisz przekształcić rzut punktu w rzut warstwy bazowej (tutaj mapa Google). Poniższy kod powinien działać
Wynika to z tego, że domyślna projekcja mapy google (merkator sferyczny) to 900913 i zwykłego punktu w lonlat w 4326.
Upewnij się, że punkt jest ustawiony jako (długość, szerokość), a nie jako (szerokość, długość).
źródło
Podczas pracy z interfejsem API JS Google Maps należy zachować ostrożność przy wersji. Domyślnie jest używana wersja API Google JS Maps w wersji rozwojowej. Sprawdź stronę: http://code.google.com/apis/maps/documentation/javascript/basics.html#Versioning
Zespół Google Maps JS też naprawia błędy. Sprawdź http://code.google.com/p/gmaps-api-issues/wiki/JavascriptMapsAPIv3Changelog
W przyszłości w pytaniu należy wspomnieć o wersji interfejsu API Map Google. Wersja 3.3 nie miała żadnych problemów z Openlayers używanymi głównie przez programistów.
źródło
Myślę, że to kwestia projekcji.
Czy próbowałeś zgłosić środek ciężkości punktu, gdy mapa się przesuwa? Możesz zobaczyć, czy coś się zmienia.
Ale z tego, co widzę w twoim kodzie, dodałeś punkt WGS84 do innego corordsys
źródło