Клуб API Картphp api 2.0Пост в архиве.a1212121.128 января 2014, 12:41подскажите пожалуйста возможно как то отправить запрос на геокодирование на php для api 2.0все примеры которые попадаются только 1.0спасибо.
12 комментариевАвторизуйтесь, чтобы оставить комментарийdimik28 января 2016, 00:47Текущая версия http-геокодера - 1.xJavascript API версионируется отдельно и никак с ним не связанаa1212121.128 января 2016, 00:47сорри, не совсем точно изложил мысли..ymaps.geocode(Coordinaty, { kind: 'district', results: 1 }).then(function (res) { district = res.geoObjects.get(0).properties.get('name');});возможно подобный запрос отправить из php ?dimik28 января 2016, 00:47Ну а как Вы сами думаете?Вы хотите выполнить код написанный на одном языке программирования в другом языке, да и еще и в разном окружении. В PHP можно использовать http-геокодерa1212121.128 января 2016, 00:47имелось в виду получить тот же результат в переменную district.понятно что языки разные, синтаксисы разные и место исполнения тоже разные. на основании указанной ссылке получается:http://geocode-maps.yandex.ru/1.x/?geocode=Coordinaty&kind=district&results=1&lang=ru-RUправильно?получаем код на php:$response = json_decode(file_get_contents('http://geocode-maps.yandex.ru/1.x/?' . http_build_query($params, '', '&')));echo $response->response->GeoObjectCollection->featureMember[0]->geoObjects->get(0)->properties->get('name');ну и ошибку:Fatal error: Call to a member function get() on a non-object inкак быть?dimik28 января 2016, 00:47в документации написано что по умолчанию отдается XMLнужно добавить format=jsonformatТребуемый формат ответа геокодера: xml — результат возвращается в виде YMapsML-документа;json — результат возвращается в формате JSON. Значение по умолчанию: xml.format=jsona1212121.128 января 2016, 00:47ага не успел... сам немного разобрался...echo $response->response->GeoObjectCollection->featureMember[0]->GeoObject->metaDataProperty->GeocoderMetaData->text; но появился еще один вопрос:как отправить такой запрос на php (аналог, имеется ввиду получить ответ эквивалентный следующей строке)L=Math.round(ymaps.coordSystem.geo.getDistance(Coordinaty1, Coordinaty2)); dimik28 января 2016, 00:47Такой запрос отправить нельзя,только самому реализовать расчет расстояния. a1212121.128 января 2016, 00:47пробовал... что то не получалось... и здесь пример брал с клуба и с вики...цифры не сходились даже примерно. а самому расписовать по синусам и косинусам... не знаю... вспомню ли..если есть что то рабочее.. буду благодаренdimik28 января 2016, 00:47Там нетривиальные формулы. Я сам их тоже не помню. Можно попробовать поискать в клубе или в интернетахa1212121.128 января 2016, 00:47t1 = t1*Math.PI/180; // широта объекта1 перевод в радианы k1 = k1*Math.PI/180; // долгота t2 = t2*Math.PI/180; // широта объекта2 k2 = k2*Math.PI/180; // долгота R = 6378160+(6356777-6378160)*(Math.sin(t1)+Math.sin(t2))/2; R = R*1.00446536756; // поправочный коэфициент для москвы L = R*Math.acos(Math.sin(t1)*Math.sin(t2)+Math.cos(t1)*Math.cos(t2)*Math.cos(k1-k2));a1212121.128 января 2016, 00:47еще вопрос.например мне надо нанести 10 меток, координаты которых хранятся в mysql.каким будет рекомендованное решение?передать массив координат на клинета, и там через js их разместить на карте?или возможен какой то вариант размещения меток на сервере через php а клиенту отдавать уже готовый результат.вопрос так сказать безопасности..dimik28 января 2016, 00:47Вы можете сгенерить YMapsML либо JSON специального формата (GeoJSON) и передать его на клиента. геообъекты описанные этими форматами можно добавить без какой-либо пост обработки прямо на карту