Cuando se tienen muchas marcas que mostrar en un mapa no es recomendable cargarlas todas a la vez, lo recomendado es cargar únicamente las marcas de la sección visible del mapa. Para hacer esto en Open Layers se utiliza la estrategia BBox (Bounding Box).
BBox envía una petición a nuestro servidor cada vez que el área visible del mapa cambia. La petición, por defecto GET, tienen como parámetro principal uno llamado bbox que tiene por valor cuatro puntos en el mapa para delimitar el cuadrado visible, concatenados por comas.
La petición se ve así:
http://mymapsapp.com/GetAreaPoints?bbox=0,50,50,0
El primer punto es el más bajo; el segundo, el más a la izquierda; el tercero, el más alto y por último, el más a la derecha.
Bonus Track: en PostGis podríamos utilizar le siguiente query para obtener los puntos dentro del cuadrado.
SELECT punto_id, nombre_punto, coordenada_punto
FROM tabla_puntos
WHERE coordenada_punto && ST_SetSRID(ST_MakeBox2D(ST_Point(0, 50), ST_Point(50, 0)), 4326)
FROM tabla_puntos
WHERE coordenada_punto && ST_SetSRID(ST_MakeBox2D(ST_Point(0, 50), ST_Point(50, 0)), 4326)
Saludos,
Giank
Giank