2014-12-03 2 views
-1

Примера данных в формате JSON (с комментариев):Почему маркеры не двигаться correcly на карте

[{"id":"280","id_vehicle":"VL0847810531","lat":"30.0761","longi":"1.01981","spee‌​d":"144","time":"2014-12-03 12:07:23"},{"id":"202","id_vehicle":"VL0645210631","lat":"34.7344","longi":"7.32‌​019","speed":"78","time":"2014-12-03 11:55:44"}] 

function updateLocations(jsonData) 
{ 
      for (i=0 ;i< jsonData.length; i++) //for all vehicles 
      { 
       var id_vehicle = jsonData[i]["id_vehicle"]; 
       var lat =  jsonData[i]["lat"]; 
       var lng =  jsonData[i]["longi"]; 
       var speed =  jsonData[i]["speed"]; 
       var str_time = jsonData[i]["time"]; 

       /************************update list*******************************/ 
       var state_icon, marker_icon, state;      
       var time = moment(str_time);           
       var last_10_Min = moment().subtract({minutes: 60 + 10}); 
       if(time.isBefore(last_10_Min)) //if before 10 last minutes 
       { 
        state_icon = INACTIVE_IMG; 
        marker_icon = INACTIVE_VEHICLE; 
        state = "INACTIVE"; 
       } 
       else //if befor 
       { 
        if(jsonData[i]["speed"] > 10) //if > 2 km/h then running 
        { 
         state_icon = RUN_IMG; 
         marker_icon = RUN_VEHICLE; 
         state = "RUN"; 
        } 
        else 
        { 
         state_icon = STOP_IMG; 
         marker_icon = STOP_VEHICLE; 
         state = "STOP"; 
        } 
       }  
       $("#state_img_"+id_vehicle).attr("src", state_icon); 
       $("#state_img_"+id_vehicle).attr('state',state); 

       $("#select_"+id_vehicle).attr("disabled" , false); // enable selection 

       /************************update location info*******************************/ 
       var locationInfo = new Array();     
       img = "<img src=" + state_icon + " width='16' height='16' >"; 
       locationInfo.push("Etat : " + state + " " + img + "<br>");   
       locationInfo.push("Latitude : " + lat + "<br>"); 
       locationInfo.push("Longitude : " + lng + "<br>");    
       locationInfo.push("Vitess: " + speed + " klm/h<br>"); 
       locationInfo.push("Temps : " + str_time + "<br>");    
       $("#info_location_" +id_vehicle).html(locationInfo.join("")); 


       /*****************update vehicles on map *************/ 
       try { 
        cBox = $("#select_"+id_vehicle);       
        if(cBox.is(':checked')) //update selected only 
        { 
         //get marker index 
         var id_map = cBox.attr("id_map"); 
         //change title 
         title = "Latitude: "+ lat + "\nLongitude: " + lng + "\nSpeed: " + speed + "\nTime: " + str_time; 
         arrayMarker[id_map].setTitle(title); //update title     
         arrayMarker[id_map].setIcon(marker_icon); 

         //move marker 
         arrayMarker[id_map].setPosition(new google.maps.LatLng(parseFloat(lat),parseFloat(lng))); 
        } 
       }catch(error){}; 
      }     
} 
    //////////////////////////////////////////////////////////////////////////////////////////////////////////// 

мой вопросом, почему при й этой функции выполняется (обновление местоположений) только Fisrt автомобиль на карте перемещается правильно, обновляются ораторы (название, значок ...), но не двигаются?

Я заметил, что они быстро двигаются и возвращаются в свое прежнее местоположение.

Спасибо за любое предложение.

+1

Не могли бы вы представить пример данных JSON? Всего 2 из 3-х мест –

+0

[{"id": "280", "id_vehicle": "VL0847810531", "lat": "30.0761", "longi": "1.01981", "speed": "144", "time ":" 2014-12-03 12:07:23 "}, {" id ":" 202 "," id_vehicle ":" VL0645210631 "," lat ":" 34.7344 "," longi ":" 7.32019 "," скорость ":" 78 "," время ":" 2014-12-03 11:55:44 "}] –

+2

Пожалуйста, не публикуйте код в комментариях, обновите свой вопрос с соответствующей информацией. На этот раз я сделал это для вас. – geocodezip

ответ

0

, наконец я нашел проблему, именно здесь:

вар маркер = новый MarkerWithLabel ({......});

массивMarker [id_map] = маркер; // поместить маркер в arrayMarker в положении indexMarker

ошибка, происходит при й я заполнила мой arrayMarker используя MarkerWithLabel (3th Lib)

изменено при е родной google.maps.Marker он работает correcly:

var marker = новый google.maps.Marker ({......}); arrayMarker [id_map] = маркер;

+1

Не было никого, кроме вас, чтобы вы знали, что вы не опубликовали код, который ссылался на MarkerWithLabel. – geocodezip

+0

есть ли какая-либо другая библиотека, расширяющая собственный маркер? –

Смежные вопросы