var allmakers = [];
var all_lat = [];
var all_lng = [];
var all_lat_length = 0;
var all_lng_length = 0;
function insert_marker(lat,lng){
all_lat.push(lat);
all_lng.push(lng);
all_lat_length++;
all_lng_length++;
var mark = new GMarker(new GLatLng(lat,lng));
allmakers.push(mark);
}
function process_markers(m) {
console.log(allmakers);
if(all_lat_length > 0) {
var i = 0;
var rounds = m[2];
if(m[2] > 1) {
while(i < rounds){
var i2 = 0;
while(i2 < all_lat_length) {
if(m[0][i] == all_lat[i2]){m[0].splice(i,1);m[1].splice(i,1);m[2]--;}
i2++;
}
i++;
}
}
else {
var i2 = 0;
while(i2 < all_lat_length) {
if(m[0] == all_lat[i2]){m[0] = '';m[1] = '';m[2]--;}
i2++;
}
}
}
console.log(m[2]);
if(m[2] > 1) { var i = 0;while(i < m[2]){insert_marker(m[0][i],m[1][i]);i++;} }
if(m[2] == 1) {insert_marker(m[0],m[1]);}
if(m[2] > 0) {mgr.addMarkers(allmakers,13);mgr.refresh();}
}
function get_and_set(sw_lat,sw_lng,ne_lat,ne_lng){
$.ajax({
url: "c4.php",
type: "POST",
data: "swlat=" + sw_lat + "&swlng=" + sw_lng + "&nelat=" + ne_lat + "&nelng=" + ne_lng,
success: function(data){
if(data != "empty") {
var data1 = (data).split("*");
if(data1[2] > 1) {
var lat = (data1[0]).split("|");var lng = (data1[1]).split("|");
lat.pop();
lng.pop();
} else {
var lat = data1[0];
var lng = data1[1];
}
var m = [];
m.push(lat);
m.push(lng);
m.push(data1[2]);
process_markers(m);
}
}
});
}
var s_sw_lat = s_sw.lat();
var s_sw_lng = s_sw.lng();
var s_ne_lat = s_ne.lat();
var s_ne_lng = s_ne.lng();
var mgrOptions = {borderPadding: 25};
var mgr = new MarkerManager(map,mgrOptions);
get_and_set(s_sw_lat,s_sw_lng,s_ne_lat,s_ne_lng);
GEvent.addListener(map, "dragend", function() {
var after_bounds = map.getBounds();
var a_sw = after_bounds.getSouthWest();
var a_ne = after_bounds.getNorthEast();
var a_sw_lat = a_sw.lat();
var a_sw_lng = a_sw.lng();
var a_ne_lat = a_ne.lat();
var a_ne_lng = a_ne.lng();
get_and_set(a_sw_lat,a_sw_lng,a_ne_lat,a_ne_lng);
});
К карте привязан listener, то есть, после перетаскивания карты, проверяются вытащенные из базы маркеры с уже теми, что есть на карте и удаляются те, которые уже есть на карте.
Оставшиеся в массиве маркеры, если такие будут, наносятся на карту и добавляются в общий массив маркеров.
Только вот проблема в том, что при перетаскивании иногда происходит вот такое, хотя в базе координат всего на 5 маркеров:
screenshot
У меня почему то проскакивает m[2] в виде единицы, хотя должен быть 0, если на карте уже есть такой маркер.
Помогите пожалуйста разобраться, где я ошибся.
Может в скрипте присутствуют лишние вычисления? Если да, то как их сократить?