Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   вопрос по jSon + Ajax (https://javascript.ru/forum/events/5321-vopros-po-json-ajax.html)

Kolyaj 06.10.2009 15:47

Цитата:

Сообщение от Beck
Эх, никто не хочет разбираться в коде.

Вы бы отформатировали его хотя бы. Вы думаете это реально прочесть?
if(m['lat'][i] == all_lat[i2] && m['lng'][i] == all_lng[i2]){m['lat'].splice(i,1);m['lng'].splice(i,1);m['mcount']--;}

Beck 06.10.2009 16:03

Сейчас выложу кусок кода, где сравнения производятся.

x-yuri 06.10.2009 16:04

Цитата:

Сообщение от Kolyaj
Вы бы отформатировали его хотя бы

хотя бы вот этим beautifier, если сам не хочешь читабельно писать

x-yuri 06.10.2009 16:28

а вообще, я бы принимал массив вида
[{"lat":"56.50097598931345","lng":"21.01032257080078"},{"lat":"56.49983904637648","lng":"20.999422073364258"}]

и заменил вот этот код на
for( var i=0; i<markers.length; i++ )
    for( var j=0; j<allMarkers.length; j++ )
        if( markers[i].lat == allMarkers[j].lat &&   markers[i].lng == allMarkers[j].lng ) {
            markers.splice( i, 1 );
            i--;
            break;
        }
for( var i=0; i<markers.length; i++ )
    insertMarker( markers[i] );
allMarkers = allMarkers.concat( markers );

Beck 06.10.2009 16:43

// all_lat это общий массив широт(latitude), которые уже на карте

//m[] это данные из ответа сервера	
	
console.log(all_lat); = ["56.50097598931345", "56.49983904637648"]
console.log(m['lat']); = ["56.50097598931345", "56.53734016907318", "56.49983904637648"]

	newlat = array_diff(m['lat'],all_lat);
	newlng = array_diff(m['lng'],all_lng);

        // вот это в firebug выдает, при появлении на карте трех маркеров, из которых 1 новый
        console.log(newlat); = [undefined, "56.53734016907318"]

// newlat это массив широт для новых маркеров на карте

Beck 06.10.2009 16:47

Цитата:

Сообщение от x-yuri (Сообщение 31905)
а вообще, я бы принимал массив вида
[{"lat":"56.50097598931345","lng":"21.01032257080078"},{"lat":"56.49983904637648","lng":"20.999422073364258"}]

и заменил вот этот код на
for( var i=0; i<markers.length; i++ )
    for( var j=0; j<allMarkers.length; j++ )
        if( markers[i].lat == allMarkers[j].lat &&   markers[i].lng == allMarkers[j].lng ) {
            markers.splice( i, 1 );
            i--;
            break;
        }
for( var i=0; i<markers.length; i++ )
    insertMarker( markers[i] );
allMarkers = allMarkers.concat( markers );

Спасибо! Вроде все понятно, только вот i--; не совсем уловил зачем?
Можете объяснить?

x-yuri 06.10.2009 16:48

Цитата:

Сообщение от Beck
Вроде все понятно, только вот i--; не совсем уловил зачем?

а ты попробуй поразбираться/поотлаживать... Это полезно. В общем console.log в помощь ;)

Beck 06.10.2009 16:49

Цитата:

Сообщение от x-yuri (Сообщение 31915)
а ты попробуй поразбираться/поотлаживать... Это полезно. В общем console.log в помощь ;)

Сейчас же примусь! :)

Теперь хочу реализовать проверку зон, из которых маркеры уже вытаскивались из базы.

Только вот как бы это реализовать, чтобы не было "слепых зон","пустых зон".

e1f 06.10.2009 17:01

Цитата:

Сообщение от x-yuri (Сообщение 31905)
а вообще, я бы принимал массив вида
[{"lat":"56.50097598931345","lng":"21.01032257080078"},{"lat":"56.49983904637648","lng":"20.999422073364258"}]

x-yuri,
а я бы (если записей станет больше)
{"head":["lat", "lng"], "rows":[["56.50097598931345", "21.01032257080078"],["56.49983904637648", "20.999422073364258"]]}

Компактней, можно читабельные имена полей задавать, без ущерба для траффика.

x-yuri 06.10.2009 17:05

Цитата:

Сообщение от Beck
Только вот как бы это реализовать, чтобы не было "слепых зон","пустых зон".

а откуда они появяться?

e1f, пожалуй +1 :)


Часовой пояс GMT +3, время: 15:52.