2012-01-24 10 views
10

Sto cercando di trovare alcuni suggerimenti su dove cercare questo argomento, ma non ho trovato nulla e ho dedicato molte ore a questo.Come ottenere la finestra corrente della mappa da OpenLayers come geometria, bounding box o wkt?

Sto anche cercando di ottenere le coordinate correnti dalla finestra corrente visualizzata dalla mappa OpenLayers per aggiungere solo questi vettori che si trovano nel riquadro di delimitazione corrente della finestra corrente.

+0

Per ol3, consultare http://stackoverflow.com/questions/22206570/how-do-bounds-work-in-openlayers-3 –

risposta

18

Per OpenLayers 2:

Map.getExtent() 

... restituirà un Bounds, che è possibile utilizzare per ottenere le coordinate lat/lungo in qualsiasi numero di modi: http://dev.openlayers.org/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html#OpenLayers.Bounds

Idealmente, si' d trasforma i vettori in oggetti Geometry e confrontali con Map.getExtent() usando Bounds.intersectBounds() per vedere se sono nella finestra corrente.

Per OpenLayers 3:

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

... restituirà un array di coordinate, che rappresenta il riquadro di delimitazione della misura.

+3

Grazie! Funziona alla grande. Ora lo uso in questo modo: 'this.map.getExtent(). ToGeometry(). ToString()' che restituisce qualcosa come 'POLYGON ((- 8852235.9398912 -2760000,11337764.060109 -2760000,11337764.060109 11370000, -8852235.9398912 11370000, -8852235.9398912 -2760000)) ' –

+0

Sono un po 'poco familiare con GIS, ma i numeri -8852235 -2760000, ... non sembrano valori lat/long? Ottengo risultati simili quando ottengo l'estensione della mappa. I valori lat/long sono compresi tra -90/90 e -180/180? –

+0

Questa risposta mi ha aiutato a risolvere questo problema: http://stackoverflow.com/a/2607145/1359765 –

Problemi correlati