Вы можете использовать курсор, похожий на метод нумерации страниц, описанный здесь:
Разбивка на страницы в Google App Engine с Java
Когда ваша страница с картой загружается, сделайте запрос AJAX с пустым параметром курсора. Обработчик запроса извлекает небольшое количество объектов, а затем возвращает ответ, содержащий их и курсор (если остаются объекты).
Из клиентского javascript, после отображения элементов на карте, если в ответе есть курсор, запустите новый запрос с курсором в качестве аргумента. В обработчике запроса, если указан курсор, используйте его при выполнении запроса.
Это создаст непрерывный цикл запросов AJAX, пока все элементы не будут выбраны и отображены на карте.
Обновление:
Вы можете написать сервис, который возвращает JSON, примерно так:
{
items:
[
{ lat: 1.23, lon: 3.45, abc = 'def' },
{ lat: 2.34, lon: 4.56, abc = 'ghi' }
],
cursor: '1234abcd'
}
Таким образом, он содержит массив элементов (с широтой / долготой и любой другой информацией, необходимой для каждого элемента), а также курсор (который будет нулевым при получении последней сущности).
Затем на стороне клиента я бы рекомендовал использовать функцию jQuery ajax для выполнения вызовов ajax, что-то вроде этого:
$(document).ready(function()
{
// first you may need to initialise the map - then start fetching items
fetchItems(null);
});
function fetchItems(cursor)
{
// build the url to request the items - include the cursor as an argument
// if one is specified
var url = "/path/getitems";
if (cursor != null)
url += "?cursor=" + cursor;
// start the ajax request
$.ajax({
url: url,
dataType: 'json',
success: function(response)
{
// now handle the response - first loop over the items
for (i in response.items)
{
var item = response.items[i];
// add something to the map using item.lat, item.lon, etc
}
// if there is a cursor in the response then there are more items,
// so start fetching them
if (response.cursor != null)
fetchItems(response.cursor);
}});
}