Клуб API Карт

Берет ли API данные из MySQL?

Мошиков Владислав
5 января 2013, 12:47

И если ДА, то как?

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

нет, напрямую не берет.

для предоставления данных необходимо преобразовывать их в форматы удобаваримые для яндекс карт (JSON, YmapsML)

Мошиков Владислав
5 января 2013, 14:39

А как же пользователи будут записывать информацию о геообъектах? Я читал что тогда пользователь дает запрос в MySQL..поясните пожалуйста)

апи работает на клиенте (в броузере) mysql работает на сервере.

я, например, делаю так. у меня есть основной файл для работы с картой и вспомогательные файлы для работы с БД - дополнение, удаление, изменение данных и т.д.

Например, для внесения данных о создаваемой метке (когда пользователь щелкнет по карте) служит файл addobject.php

После щелчка по карте я создаю геообъект, присваиваю ему необходимы свойства и записываю в БД. В ответ БД присылает  "ОК" (мол, записалось все). Если это получено, то  рисую объект на карте.Пресеты у меня при создании все идут одинаковые, потэтому я в базу их не передаю, они там такие же по дефолту. Изменяю потом в другом месте, где разрешено редактирование объекта, тогда уже в базу передаются подсказки, типы иконки  и пр.

var MyMarks=new  ymaps.GeoObjectCollection()

myMap.geoObjects.add(MyMarks)

......

myMap.events.add('click', function (e) {
var coords = e.get('coordPosition'); //получаю координаты щелчка

 var  myGeometry = {type: 'Point', coordinates: coords},
 myOptions = {draggable: true, preset: "twirl#redStretchyIcon" };

var myPlacemark = new ymaps.GeoObject({geometry: myGeometry},  myOptions);
Y=coords[0]

X=coords[1]

$.getJSON("addmapobj.php",{u_id:UserId, x:X, y:Y}, function(json){ //  вот непосредственно отсылка данных для записи в БД
if (json.status == 'OK') {

MyMarks.add(myPlacemark);

.....

в файле addmapobj.php

для начала идет извлечение параметров из запроса,

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
$userid=$_GET['u_id'];
$x=$_GET['x'];

$y=$_GET['y'];

затем добавление объекта в БД

и если все нормлаьно, то отсылка ответа, что все ОК

$json='{"status": "OK"}';
echo  $json;

 

Для того, чтобы прочитать из базы все, что туда поназаписали, шлю запрос к другому файлу, передавая туда ид пользователя

$.getJSON("getmapobj.php",{u_id:UserId}, function(json){ // а это запрос из  БД
if (json.status == 'OK') {
var myobj=json;
for (var key in myobj) { //key=id1, id2....
if(key!="status"){
var m = new ymaps.GeoObject({geometry: myobj[key].geometry, properties:myobj[key].properties}, myobj[key].options);
MyMarks.add(m);

.....

файл getmapobj.php, выбирает все принадлежащие пользователю объекты и возвращает ответ вида

{"id46":{"geometry":{"type":"Point","coordinates": [1, 2 ]},"properties":{"hintContent":"метка1", "balloonContent":"описание метки"},"options":{"id_creator": 1,"preset": "twirl#violetStretchyIcon"}},
"id55":{"geometry":{"type":"Point","coordinates": [ 2, 5 ]},"properties":{"hintContent":"метка2", "balloonContent":"описание"},"options":{"id_creator": 1,"preset": "twirl#orangeStretchyIcon"}},"status": "OK"}

 

если вобщем и на пальцах, то как-то так :)

конкретно общение с MySQL -это уже другая песня :)

Мошиков Владислав
5 января 2013, 17:51

Спасибо)