карта Google с отслеживанием GPS - PullRequest
4 голосов
/ 13 июля 2011

Я хочу поставить маркер на единственном посещенном пути, а не в какой-либо точке на карте ... мой код похож на этот

function initialize() {
geocoder = new google.maps.Geocoder();
        var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
            var mapDiv = document.getElementById('map-canvas');
        map = new google.maps.Map(mapDiv, {
            zoom: 15,
                    center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });
            google.maps.event.addListener(map, 'click', addNewPoint)

  }

$(document).ready(function(){

initialize();
temp();

});


function reload()
{
window.location.href='<?=base_url()?>index.php/admin/tracking';
}


function addNewPoint(e)
{

 var data="";

 if(i>0)
{
      for (i in markersArray)
      {
            markersArray[i].setMap(null);
      }
            markersArray.length = 0;
}
$.ajax({
        type: 'post',
        url: '<?=base_url()?>index.php/admin/tracking/get_last_location',
       // data: 'season_id='+season_id,
        dataType: "json",
        success: function(msg) {
               var newLatlng = new google.maps.LatLng(msg.lat,msg.lng);
        marker = new google.maps.Marker({map: map,position: e.latLng});
        data+="Position :-"+e.latLng;
        geocoder.geocode({'latLng': e.latLng}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    if (results[1]) {
      map.setZoom(13);
      infowindow.setContent(results[1].formatted_address);
      data+="\naddress :-"+results[1].formatted_address;

      infowindow.open(map, marker);
    }
    document.getElementById('info').value=data;

  } else {
    alert("Geocoder failed due to: " + status);
  }
        });
  }
});

 markersArray.push(marker);

 i++;

 }


function temp1(){

$.ajax({
        type: 'post',
        url: '<?=base_url()?>index.php/admin/tracking/get_last_location',
       // data: 'season_id='+season_id,
        dataType: "json",
        success: function(msg) {
               var newLatlng = new google.maps.LatLng(msg.lat,msg.lng);
                map.panTo(newLatlng);
                document.getElementById('speed').value=msg.speed;
                if(myPoints.length>0)
                {
                   var oldLatlng=myPoints[myPoints.length-1];
                    var myCoordinates = [
                            oldLatlng,
                            newLatlng
                          ];
                          if(oldLatlng!=newLatlng)
                          {
                              var myPath = new google.maps.Polyline({
                                path: myCoordinates,
                                strokeColor: "#FF0000",
                                strokeOpacity: 1.0,
                                strokeWeight: 2
                              });
                              way.push(myPath);
                              myPath.setMap(map);
                          }
                          myPoints.push(newLatlng);



                }
                else
                {
                //var newLatlng = new google.maps.LatLng(value['lat'],value['long']);
                    myPoints.push(newLatlng);


                }

        }

    });
    setTimeout("temp1()",2000);

   }

  function deleteOverlays() {
 if (myPoints.length>0) {
  for (i in myPoints) {
  myPoints[i].setMap(null);
 }
 myPoints.length = 0;
 }
 if (way.length>0) {
  for (i in way) {
  way[i].setMap(null);
 }
 way.length = 0;
}

}

, но из этого кода я могу поставить маркер только в одной точке.что я могу сделать ???

1 Ответ

1 голос
/ 01 мая 2013

Я собираюсь попытаться помочь, хотя прошло уже много лет с тех пор, как я работал с картами Google.

Код для вставки нового маркера в массив находится вне функции успеха, где новый маркерсоздано.Кроме того, если вы инициализировали массив значениями, я подозреваю, что добавление нового значения добавляет его в массив после всех данных, которые вы уже инициализировали.

Но я совсем не уверен, почему это даствам вообще нужен любой маркер.

Я предлагаю оставить массив неинициализированным, а затем вставить новый маркер в функцию успеха AJAX.Установите карту для маркера и любую другую информацию там, используя новый объект маркера, чтобы прояснить ситуацию.

Я не уверен на 100% в вопросе добавления массива к добавлению в массив, который уже имеет значения, но янадеюсь, что эта информация поможет вам найти решение.

...