Имам малък проблем тук.
Какво искам да направя.
На моя сървър имам таблица с маркери, които имат lat, lng, плочка полета в него. Има много маркери в таблицата, така че ги изисквам чрез плочки, които са видими за потребителя. Крайната ми цел е да го накарам да работи както трябва.
проблем
Исках да разреша това, като създам свой собствен 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
нотация и следователно всички плочки, които са наследници на тази плочка. Но няма да мога да използвам други плочки за извличане на данни от сървъра.
Въпрос
И така, какво мога да направя, за да променя координатите на други плочки, където картата просто се повтаря, за да има същите координати като основните плочки? Или можете да предложите друг начин за решаване на това. Всяка помощ ще бъде оценена.