Клуб API Карт

Вставка координат из бд

Stepanyan-Gor
25 апреля 2014, 14:47

Здравствуйте! Мне нужно вставить координаты из бд. у меня есть код на php где я из базы полчаю координаты. Вот такой: 

 

while($row = mysql_fetch_array($query2)) {

  $myArr[$i]=array();

  $myArr[$i][0]=$row['lat'];

  $myArr[$i][1]=$row['lon'];

  $myArr[$i][2]=$row['time'];

  $i++;

}

 

 

мне нужно из php кода полученные данные вставить в карту и построить маршрут.  пробую уже  3 день не как не получается. и еще в балун засунуть время. ну как в примере чтобы когда нажмешь открывается и отображается, а так там каждая точка по цифрам от 1 до n

 

 

<script type="text/javascript">

 

ymaps.ready(init);

/* var myArr = [][];

 myArr = $js_obj;

     var int temp1 = $i;

     var double lat;

     var double lon;*/

function init() {

   

    var myMap = new ymaps.Map("map", {

            center: [55.74954, 37.621587],

            zoom: 13

        });

 

// Изменяем свойство поведения с помощью опции:

    // изменение масштаба колесом прокрутки будет происходить медленно,

    // на 1/2 уровня масштабирования в секунду.

    myMap.options.set('scrollZoomSpeed', 0.5);

var myArr = [][];

 

Помогите пожалуйста.

 myArr = $js_obj;

     var int temp1 = $i;

     var double lat;

     var double lon;

 

    // Добавим на карту схему проезда

    // от улицы Крылатские холмы до станции метро "Кунцевская"

    // через станцию "Молодежная" и затем до станции "Пионерская".

    // Точки маршрута можно задавать 3 способами:

    // как строка, как объект или как массив геокоординат.

    ymaps.route([

         

 

       //  for (var i=0; i=temp1-1; i++) {

      //     for (var j=0; j=2; j++) {

          //   myArr[i][j] = <?=$myArr[i][j]?>;

      //       i++;

 [55.74954, 37.621587]// метро "Кунцевская".

        //   }

      //   }

 

        

    ]).then(function (route) {

        myMap.geoObjects.add(route);

        // Зададим содержание иконок начальной и конечной точкам маршрута.

        // С помощью метода getWayPoints() получаем массив точек маршрута.

        // Массив транзитных точек маршрута можно получить с помощью метода getViaPoints.

        var points = route.getWayPoints(),

            lastPoint = points.getLength() - 1;

        // Задаем стиль метки - иконки будут красного цвета, и

        // их изображения будут растягиваться под контент.

        points.options.set('preset', 'twirl#redStretchyIcon');

        // Задаем контент меток в начальной и конечной точках.

        points.get(0).properties.set('iconContent', 'Точка отправления');

        points.get(lastPoint).properties.set('iconContent', 'Точка прибытия');

 

        // Проанализируем маршрут по сегментам.

        // Сегмент - участок маршрута, который нужно проехать до следующего

        // изменения направления движения.

        // Для того, чтобы получить сегменты маршрута, сначала необходимо получить

        // отдельно каждый путь маршрута.

        // Весь маршрут делится на два пути:

        // 1) от улицы Крылатские холмы до станции "Кунцевская";

        // 2) от станции "Кунцевская" до "Пионерская".

 

   

    }, function (error) {

        alert('Возникла ошибка: ' + error.message);

    });

}

</script>

 

29 комментариев
Подписаться на комментарии к посту

За 3 дня уже можно научиться использовать developer tools в браузере.

 

 

   myArr = $js_obj;
     var int temp1 = $i;
     var double lat;
     var double lon;

если это javascript, то так нельзя писать

я не веб программист. у меня есть код легкий 

 

 echo ("

 

 

 

 ");

 вот на этом месте должен быть массив с координатамы из php кода. 

   [55.731272, 37.447198],

[55.735272, 37.417198],

 

можете сказать как это сделать. весь код вставлен в echo в php . 

я не php-программист

наверное надо использовать какой-нибудь json-encode

Спасибо!

function connect(){

 

  $connect = mysql_connect($host, $user, $password);

  mysql_select_db($database);

}

  $date=$_POST['date'];

  $login=8;

  $password;

  $user_id;

  $users= "users";

  $data = "data";

  $pixel= "pixel";

  $temp1="5a3fa3504f2a80dfa5b17a0e74d346ae";

  $myArr = array();

  $i=0;

  $l=0;

  $p=0;

  $data2 = array();

  $json;

  $jlat;

  $jlon;

  $jtime;

  $data;

 

function kuki(){

global $login, $password;

  $temp1="5a3fa3504f2a80dfa5b17a0e74d346ae";

  if (isset($_COOKIE["$temp1"])) {

    $login = $_COOKIE["$temp1"];

    if (isset($_COOKIE["$login"])) {

      $password = $_COOKIE["$login"];

    }  else {

      echo header('Location: http://www.fay-say.net78.net/index.php');

    }

  } else {

    echo header('Location: http://www.fay-say.net78.net/index.php');

  }

}

function autorization(){

  connect();

  global $login, $password,$user_id;

  $sql="SELECT * FROM `users` WHERE login='$login'";

  $query=mysql_query($sql);

  $user_data = mysql_fetch_array($query);

  $user_id=$user_data['id_users'];

  echo "+++".$user_id."+++";

}

echo $date;

kuki();

autorization();

carts();

 

if (isset($_POST[add])) {

  $imei=$_POST['imei'];

  $sim=$_POST['sim'];

  $sql1="SELECT COUNT( `id_user` =  '$user_id' ) FROM `data` WHERE `imei` = '$imei'";

  $query1=mysql_query($sql1);

  $user_data1 = mysql_fetch_array($query1); 

  $k=$user_data1[0];

  if ($k==0) {

    $sql2="INSERT INTO  `data` (`id_user` ,`imei` ,`sim`)VALUES ( '$user_id', '$imei', '$sim');";

    echo $sql2;

    $query2=mysql_query($sql2);

    echo "DATA IS ADDED";

  }else{

    echo "THIS DATA DEVICES YOU HAVE ENTERED";

  }

}

 

function displey () {

  global $user_id;

  $sql="SELECT * FROM `data` WHERE `id_user`=$user_id";

  $query=mysql_query($sql);

  echo'';

  $i=0;

  while ($row = mysql_fetch_array($query)) {

    echo''">'.$row["name"].'on>';

    $i++;

  }

  echo"";

}

 

function carts(){

  if (isset($_POST[show])) {

 

 

  $id_data = $_POST[menu];

 $date = $_POST[date];

 //узнаем imei телефона

 

$sql1 = "SELECT `imei` FROM `data` WHERE (`id_data`='$id_data' )"; 

 

$query1=mysql_query($sql1);

$user_data1 = mysql_fetch_array($query1); 

$sim = $user_data1['imei'];

 

echo $sim;

 

 // из бд втаскиваем интересующие нам столбцы

$sql6= "SELECT `time`,`lat`,`lon` FROM `pixel` WHERE (`date`='$date')&(`sim`='$sim')"; 

 

  //89014103211118510720  SELECT COUNT (`sim`='89014103211118510720') FROM `pixel` WHERE `date`='2014-04-18'

 

$query6=mysql_query($sql6);

 

echo " - ";

 

$time = array();

global $data2;

global $myArr;

global $i;

global $json;

global $l;

global $p;

//$myArr[]=array();

while($row=mysql_fetch_array($query6)) {

  

  $myArr[$l][0]=$row['lat'];

  $lat [$l] = array ($row['lat']);

  $myArr[$l][1]=$row['lon'];

  $lon [$l] = array ($row['lon']);

  $myArr[$l][2]=$row['time'];

  $time [$l] = array ($row['time']);

  $l++;

}

 

 

for ($p=0;$p

 

  echo " - ";

  echo $myArr[$p][0];

  echo " - ";

  echo $myArr[$p][1];

  echo " - ";

  echo $myArr[$p][2];

  echo " - ";

  echo $p;

  

}

 

$data2 = array(

    'points' => array(),

    'times' => array()

);

 

 

for($y=0;$y

    $data2->points[] = array($myArr[$y][0],$myArr[$y][1]);

    $data2->times[] = $myArr[$y][2];

}

 

echo $l;

echo " - ";

echo $myArr[20][0];

echo " - ";

echo $myArr[20][1];

echo " - ";

echo $myArr[20][2];

echo " * * ";

var_dump ($data2);

echo " * * ";

 

 

}

}

global $data2;

?>

 

 

 

     

 

 

 

    ENTER IMEI AND SERIAL NUMBER OF SIM CARD

    YOUR IMEI :

    YOUR NUMBER OF SIM :

    NAME :

   

 

 

 

 

      

   

     

 

 

 

 

    маршрут

   

   

   

   

 

 

   

   

 

 

не работает кусок в котором формирется массив для передачи в код карты:

$data2 = array(

    'points' => array(),

    'times' => array()

);

 

 

for($y=0;$y

    $data2->points[] = array($myArr[$y][0],$myArr[$y][1]);

    $data2->times[] = $myArr[$y][2];

}

 

$data2 получается пустая. ошибок нет.

Может кто нибудь помочь или нет? Я и в службу поддержки написал, они дали код, но не работает. сказали тут писать. Помогите пожалуйста ))))

Нашел причину. Яндекс карты напишите у себя большимы буквимы красним цветом, что если координаты находятся на воде то на карте нечего не будет отображаться маршрут. Помоему было бы лучше если бы отображались. Мало ли человек на лодке рыбачит и вынесет его в море или еще что. Одним словом думали код карт глючит, оказался специфика такая.

Маршрутизатор расчитывает только автомобильные маршруты по дорогам.

Какая тут может быть вода?

а если сплав по реке то как мне маршрут составить???

сплав на автомобиле?

Я же говорю автомобильные по дорогам

ну если мне надо по воде то как по другому сделать маршрут? как мне точку поставить и рисовать маршрут? по идее он точку то должен показать в воде но к нему пусть не поведет маршрут. но он и точку не показывает

нет не должен.

Маршрут будет строиться от ближайшей точки на дороге.

Маршруты по воде вам надо рисовать самому с помощью ломаных

он и ближайщую точку не показывает)))) 

думаю тогда весь маршрут лучше с помощью ломанных строить, чтобы меньше проблем было.

Спасибо за совет))) 

по каким точкам вы строите маршрут?

точки были переданы из эмулятора андроида на сервер в базу, точки просто так вводил от руки не зная куда попадут. потом посмотрел что попадут в океан возле Португалии. вот часть из них 

[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-31.0862933333333],

сейчас ввел  в Москве чтобы было 

[55.755508,37.435225],[55.745508,37.455225],[55.715508,37.405225],[55.645508,37.335225],[55.745508,37.435225]

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

по тем координатам что вы дали маршрут не может быть построен

Срабатывает второй обработчик в методе then.

Так что все вроде бы корректно. 


ymaps.route([
[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-11.0862933333333],[37.422005,-31.0862933333333]    ]).then(function (route) {        alert('маршрут построен');    }, function (error) {        alert('Возникла ошибка: ' + error.message);    });

 

 

а через ломанные он будет работать? ну точки в воде покажет? 

через ломаные – я имею ввиду соединить ваши точки прямыми линиями (например)

Тут уже собственно все зависит от вас.

Можно еще  вопрос? Вот я нашел 

ymaps.ready(init);

 

function init() {

    // Создаем карту.

    var myMap = new ymaps.Map("map", {

            center: [55.72, 37.44],

            zoom: 10

        });

 

    // Создаем ломаную, используя класс GeoObject.

    var myGeoObject = new ymaps.GeoObject({

            // Описываем геометрию геообъекта.

            geometry: {

                // Тип геометрии - "Ломаная линия".

                type: "LineString",

                // Указываем координаты вершин ломаной.

                coordinates: [

                    [55.80, 37.50],

                    [55.70, 37.40]

                ]

            },

            // Описываем свойства геообъекта.

            properties:{

                // Содержимое хинта.

                hintContent: "Я геообъект",

                // Содержимое балуна.

                balloonContent: "Меня можно перетащить"

            }

        }, {

            // Задаем опции геообъекта.

            // Включаем возможность перетаскивания ломаной.

            draggable: true,

            // Цвет линии.

            strokeColor: "#FFFF00",

            // Ширина линии.

            strokeWidth: 5

        });

 

    // Создаем ломаную с помощью вспомогательного класса Polyline.

    var myPolyline = new ymaps.Polyline([

            // Указываем координаты вершин ломаной.

            [55.80, 37.50],

            [55.80, 37.40],

            [55.70, 37.50],

            [55.70, 37.40]

        ], {

            // Описываем свойства геообъекта.

            // Содержимое балуна.

            balloonContent: "Ломаная линия"

        }, {

            // Задаем опции геообъекта.

            // Отключаем кнопку закрытия балуна.

            balloonCloseButton: false,

            // Цвет линии.

            strokeColor: "#000000",

            // Ширина линии.

            strokeWidth: 4,

            // Коэффициент прозрачности.

            strokeOpacity: 0.5

        });

 

    // Добавляем линии на карту.

    myMap.geoObjects

        .add(myGeoObject)

        .add(myPolyline);

}

код ломанной. на примерах можно карту увелечить с помощью колесика мышки, но при ставке на сайт нету этого. можно только при клике по карте. и еще вышло обновление 2,1. он лучше или пока не стоит его ставить, чтобы не было глюков? 

Пример вывода ломаной.

Лучше использовать 2.1

Да я тот же пример взял. и еще один вопрос на счет ключа. Он важен или можно и без него? сейчас я из примера брал и он работает

 

 

    маршрут

   

   

   

 

 

   

   

 

 

вот такой код. 

где ключ в вашем коде?

нету. Вот и я об этом. у меня без ключа работает код который я из примера ставил. Нужно ли ключ ставить? его обязательно надо ставить или можно так оставить без ключа???

Ключи были в первой версии АПИ

начиная с 2.0 ключи не нужны.

спасибо)

 

 

    Примеры. Метка

   

   

 

   myMap.geoObjects

        .add(myGeoObject)

for (var i = 0; i < l; i++) {

.add(new ymaps.Placemark(data.points[i], {

var points = route.getWayPoints(),

 

Ерунда какая-то написана.

Это синтаксически неверная конструкция

 

Мне надо обьединить 2 код, вот этот 

    Примеры. Метка

   

   

Сделали))) Спасибо.

 

Может кто тоже делает что-то такое и понадобыиться. 

$data2 = array(

    'points' => array(),

    'times' => array()

);

$str="";

$tms="";

for($i=0;$i

  $data2['points'][$i]=array();

  $data2['points'][$i][0]=$myArr[$i][0];

  $data2['points'][$i][1]=$myArr[$i][1];

  if($i!=0) $str.=","; $tms.="";

  $pos="[".$myArr[$i][0].",".$myArr[$i][1]."]"; 

  $str.=$pos;

  $data2['times'][$i]=$myArr[$i][2];

  $tms.=".$myArr[$i][2].";

}

global $data2;

 

?>

 

 

 

    Примеры. Метка