У меня тут небольшая проблема.
Что я хочу сделать.
На моем сервере у меня есть таблица с маркерами, которые имеют широту, длину, плитку поля в нем. В таблице много маркеров, поэтому я запрашиваю их тайлами, которые видны пользователю. Заставить его работать как надо — моя конечная цель.
Проблема
Я хотел решить эту проблему, создав собственный mapType и определите метод getTile()
, который будет отвечать за запрос соответствующих тайлов с сервера, используя нотацию x/y/z
, где x,y — координаты тайла, а z — уровень масштабирования. Подробнее об этом вы можете узнать здесь. Вот мой код (я использую плагин jquery-ui-map здесь):
function ServerFetchMapType() {
this.tileSize = new google.maps.Size(256,256);
this.maxZoom = 15;
this.name = "Server Tile #s";
this.alt = "Server Data Tile Map Type";
this.getTile = function(coord, zoom, ownerDocument){
//Data for request
var x = coord.x;
var y = coord.y;
var z = zoom;
//Here i will make an ajax request for markers in this tile
//Visualization
var div = ownerDocument.createElement('DIV');
div.innerHTML = 'X:' + coord.x + ' Y:' + coord.y + ' Z:' + zoom;
div.style.width = this.tileSize.width + 'px';
div.style.height = this.tileSize.height + 'px';
div.style.fontSize = '10';
div.style.borderStyle = 'solid';
div.style.borderWidth = '1px';
div.style.borderColor = '#AAAAAA';
return div;
};
}
var test = new ServerFetchMapType();
$('#map_canvas').gmap();
$('#map_canvas').gmap('get', 'map').overlayMapTypes.insertAt(0, test);
Все работало, но потом обнаружил один недостаток, проиллюстрирую его:
Как вы можете видеть, только 4 плитки в центре изображения имеют правильную нотацию x/y/z
и, следовательно, все плитки, которые являются потомками этой плитки. Но я не смогу использовать другие плитки для получения данных с сервера.
Вопрос
Итак, что я могу сделать, чтобы изменить координаты других плиток, где карта просто повторяется, чтобы иметь те же координаты, что и основные плитки? Или вы можете предложить другой способ решения этой проблемы. Любая помощь будет оценена.