2012-01-24 7 views
10

Próbuję znaleźć wskazówki, gdzie powinienem szukać tego tematu, ale nic nie znalazłem - i spędziłem wiele godzin na tym.Jak uzyskać aktualną rzutnię mapy z OpenLayers jako geometrię, ramkę ograniczającą lub wkt?

Próbuję również pobrać bieżące współrzędne z aktualnie wyświetlanej rzutni z mapy OpenLayers, aby dodać tylko te wektory, które znajdują się w bieżącym polu granicznym bieżącej rzutni.

+0

Dla ol3 patrz http://stackoverflow.com/questions/22206570/how-do-bounds-work-in-openlayers-3 –

Odpowiedz

18

Dla OpenLayers 2:

Map.getExtent() 

... powróci do granic, które można następnie użyć, aby uzyskać LAT/długie współrzędne w dowolnej liczbie sposobów: http://dev.openlayers.org/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html#OpenLayers.Bounds

Najlepiej,” d przekształć wektory w obiekty Geometry i sprawdź je w Map.getExtent() za pomocą Bounds.intersectBounds(), aby sprawdzić, czy są one w bieżącej rzutni.

Dla OpenLayers 3:

ol.Map.getView().calculateExtent(map.getSize()) 

... zwróci tablicę współrzędnych, reprezentujący obwiednię zakresie.

+3

Dzięki! To działa świetnie. Używam go teraz w ten sposób: 'this.map.getExtent(). ToGeometry(). ToString()', który zwraca coś w stylu 'POLYGON ((- 8852235.9398912 -2760000,11337764.060109 -2760000,11337764.060109 11370000, -8852235.9398912 11370000, -8852235.9398912 -2760000)) ' –

+0

Jestem trochę obeznany z GIS, ale numery -8852235 -2760000, ... nie wydają się wartościami lat/long? Otrzymuję podobne wyniki, gdy uzyskuję zasięg mapy. Czy wartości lat/long są w zakresach -90/90 i -180/180? –

+0

Ta odpowiedź pomogła mi rozwiązać ten problem: http://stackoverflow.com/a/2607145/1359765 –

Powiązane problemy