Всем привет, использую GeoCoder для обнаружения координат по имени учебного заведения. Проблема заключается в том что, GeoCoder обнаруживает крайне не правильные координаты объекта на карте.
Пример имя учебной организации КГБ ПОУ СИЭК , нахожу координаты через geocoder получаю 47.141453 29.23.241
Если ввести в те же самые яндекс карты имя учебного заведения , то мы с легкостью его находим , а если введем координаты то получим вообще пустырь в молдовии. Да и координаты не перепутаны , если проверить наоборот то мы попадем уже к арабам
29.23.241 47.141453
Так же я пробовал указать Город+Имя учебного заведения, аналогично. Т.е пример
Спасск-Дальний КГБ ПОУ СИЭК
С чем это связано? Как лечить это? Код через который я запрашиваю прилагаю.
<?php
$mysqli = new mysqli("localhost", "USER", "PASSWORD", "NAMEDB");
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
// Выборка данных из таблицы
$addresses = $mysqli->query("SELECT DISTINCT sid, name, value FROM webform_submission_data WHERE name = 'form_name_org'");
// Общее количество адресов и количество адресов, в обработке которых произошла ошибка
$countGeocode = $countGeocodeFault = 0;
// Обработка адресов
$result = '<table style="width:600px">';
while ($row = $addresses->fetch_assoc()) {
$countGeocode++;
// Обращение к http-геокодеру
$xml = simplexml_load_file('https://geocode-maps.yandex.ru/1.x/?apikey=API-KEY&geocode='.urlencode($row["value"]).'&results=1');
// Если геокодировать удалось, то записываем в БД
$found = $xml->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found;
if ($found > 0) {
$coords = explode(' ', $xml->GeoObjectCollection->featureMember->GeoObject->Point->pos);
$result .= '<tr><td>'.$row['value'].'</td><td>'.$coords.'</td></tr>';
$mysqli->query("UPDATE webform_submission_data SET lon = '".$mysqli->real_escape_string($coords[1])."', lat = '".$mysqli->real_escape_string($coords[0])."' WHERE sid = {$row['sid']} AND name = 'form_name_org'");
}
else {
$result .= '<tr style="color:red"><td>'.$row['value'].'</td><td>ошибка</td></tr>';
$countGeocodeFault++;
}
};
$result .= '</table>';
// Вывод результата
echo $result;
// Закрытие соеденинения с сервером
mysqli_close($mysqli);
// Вывод общего количество прогеокодированных результатов
if ($countGeocode) {
echo '<div style="margin-top:1em">Всего обработано адресов: '.$countGeocode.'</div>';
if ($countGeocodeFault) {
echo '<div style="color:red">Не удалось прогеокодировать: '.$countGeocodeFault.'</div>';
}
} else {
echo '<div>Таблица с адресами пуста.</div>';
}
?>