Адрес кириллицей не проходит геокодинг, где насвинячил?
Привет всем. Сегодня ночью сел за Google Maps Api, решил хоть немного узнать что это, как оно выглядит и как работает, так что опыта 0, да и не программист я. Закрывших страницу после этих слов — понимаю =).
С чем имеем дело:
— База данных (utf8_general_ci)
— Таблица с небольшим количеством строк
— В таблице адреса типа «Украина, Киев, Иванова, 1»
— Простая страница для вывода карты
— Файлик в формате js подключающийся к страничке, в нем весь код API и содержится
Процесс:
Стандартная ситуация — скрипт вытягивает адрес с базы, проводит его геокодирование, получает lat и lng, по ним центрирует карту и размещает маркер на странице. (код немногим отличается от того что в примера представлено на гугле, собственно учусь же)
Проблема:
Если адрес в базе написан кириллицей («Украина, Киев, Иванова, 1») — ничего не работает. Если на английском («Ukraine, Kyiv, Ivanova, 1») — все отлично.
Полтора часа гуглю, пробую, не выходит… Буду благодарен за помощь. Если нужна какая-то более обширная инфа — пишите.
Среди всего прочитанного натыкался на это. Только не знаю где и как его вписать/применить, потому не смог проверить. Если есть ссылки или слова напутствия, буду очень признателен.
Это джава который все делает и подгружается в страничку:
function load() {
downloadUrl("phpsqlajax_genxml.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
var i = 0;
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var html = "<b>" + name + "</b> <br/>" + address;
var geocoder = new google.maps.Geocoder();
geocoder.geocode( {'address': address}, function(results, status) {
var coords = results[0].geometry.location;
var latlng = new google.maps.LatLng( coords.lat(), coords.lng() );
var map = new google.maps.Map(document.getElementById("map"), {
center: latlng,
zoom: 16,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow;
var marker = new google.maps.Marker({
map: map,
position: latlng,
});
bindInfoWindow(marker, map, infoWindow, html);
});
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
И в догонку. По сути все взято отсюда Using PHP/MySQL with Google Maps за исключением того что я не хочу вводить координаты адреса а получать их имея адрес. (Это если возникнут вопросы «что за phpsqlajax_genxml.php?»)
Неа, Андрей, не прошло =) Умирают оба варианта — и кириллица и латиница. Сейчас еще посмотрю на файл который за XML отвечает (но там вроде все учтено). Где-то что-то я чушь спорол )))
Гугл картами не пользовался особо, но отказ кушать кирилицу лежит в области кодовой страницы.
Я бы покопал в этом направлении, учитывая следующую фразу:
If language is not supplied, the geocoder will attempt to use the native language of the domain from which the request is sent wherever possible. developers.google.com/maps/documentation/geocoding/