Как обновить узел через OpenStreetMap PHP Api

Я пытаюсь обновить узел, который я создал ранее, через OSM PHP API. Я разработал некоторые функции, которые выполняют некоторые операции CRUD с использованием открытого API карты улиц.

Моя функция обновления получает узел и идентификатор набора изменений для выполнения этой операции, а затем я делаю запрос пут через этот URL /api/0.6/node/#id

    $ls_url_update_node = $this->get_api()->get_base_url() . "/api/0.6/node/".$this->get_id();
$lo_requete = Request::put($ls_url_update_node);

$ls_xml_node = $this->generate_xml($po_changeset);

$lo_requete = Request::put($ls_url_update_node)
->sendsType('text/xml')
->addHeader('Authorization', $this->get_api()->get_authorization_header())
->body($ls_xml_node);
$lo_response = $lo_requete->send();

Функция genarate_xml пытается сгенерировать действительный XML, соответствующий спецификациям OSM.

<osm>
<node id="123" lat="..." lon="..." version="142" changeset="12"   user="fred" uid="123" visible="true" timestamp="2005-07-30T14:27:12+01:00">
<tag k="note" v="Just a node"/>
...
</node>
</osm>

OSM Api возвращает это сообщение об ошибке: Не удается проанализировать действительный узел из строки XML. Может, я пропустил некоторые различия между созданием и обновлением узла. Так что любая помощь, пожалуйста.

0

Решение

Вы должны отправить свой запрос /api/0.6/changeset/create, Также он должен содержать <changeset> элемент. Пожалуйста, обратитесь к Документация API для создания наборов изменений.

Добавление элементов осуществляется путем отправки /api/0.6/[node|way|relation]/createсм API документация для создания элементов. Там вы должны обратиться к ранее открытой ревизии.

Если вы по-прежнему сталкиваетесь с проблемами, возможно, было бы неплохо использовать один из популярных редакторов OSM и просматривать их запросы / ответы через wireshark или аналогичную программу.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]