Нарисуйте координаты из базы данных на Google Maps, продолжайте проверять новые значения - PullRequest
2 голосов
/ 31 января 2012

Я создаю приложение карты, где устройство отправляет координаты в веб-базу данных каждые 10 секунд. Я нанес их на карты Google. Но проблема в том, что мне нужно перезагружать карту каждые 5 секунд, чтобы загрузить новые поступившие координаты. Для этого я могу использовать функцию javascript setTimeout (). Я не уверен, смогу ли я использовать этот запрос для опроса последней вставленной строки. SELECT lat, lon FROM map ORDER BY id DESC LIMIT 1 (автоинкремент 'id'). Я знаю, что может быть что-то лучше. Любая помощь будет принята с благодарностью. Благодарю. Это мой код.

<?php $db = mysql_connect("localhost","root","qwerty");
 mysql_select_db("test", $db); ?>

<script type="text/javascript"
  src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
    var myOptions = {
    zoom: 13,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    var WalkingPathCoordinates = [];
    <?php  $coordinates="SELECT * FROM map";
            $Result1 = mysql_query($coordinates, $db)or die(mysql_error());  
            while(list($id,$lat,$long) = mysql_fetch_row($Result1))
                { 
                echo "var latlng = new google.maps.LatLng(".$lat.",".$long.")\n";
                echo "WalkingPathCoordinates.push(latlng);\n";
                }
    ?> 
var WalkingPath = new google.maps.Polyline({
    path: WalkingPathCoordinates,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2
    });

WalkingPath.setMap(map);
  }
</script>

1 Ответ

0 голосов
/ 31 января 2012

Если вы не хотите обновлять всю карту, вы можете разделить вашу функцию инициализации на две функции. Например, у вас может быть одна функция initializeMap (), которая выполняет часть, отображающую карту на странице, что-то вроде этого:

var map

function initializeMap() {
    var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
    var myOptions = {
        zoom: 13,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

Другая функция может называться refreshMarkers () и выполнять все, что связано с маркерами. С объявлением map вне функции initializeMap () он доступен из функции refreshMarkers ().

Функция initializeMap () должна вызываться только один раз, а функция refreshMarker () должна отправляться в setTimeout (), как вы это сделали с initialize в своем примере. Таким образом, при каждом тайм-ауте будут выполняться только функции refreshMarker ().

К сожалению, у меня не было возможности проверить это, поэтому я не уверен, нужно ли вам также удалять старые маркеры в функции refreshMarker.

Дайте мне знать, если это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...