Клуб API Карт

геокодирование - адреса из базы данных

natasha.shtokalenko
4 февраля 2012, 11:30

Я в javascript совсем не разбираюсь (только начала учить), поэтому заранее прошу прощения.

Есть переменная, полученная из БД в формате = город,улица, дом.

Есть код API Яндекс.Карт

var map, geoResult, value;

// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]

// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(40.927092,57.772428), 10);

// Добавление элементов управления
map.addControl(new YMaps.TypeControl()
}
// Функция для отображения результата геокодирования
// Параметр value - адрес объекта для поиска
function showAddress (value) {
// Удаление предыдущего результата поиска
map.removeOverlay(geoResult);

// Запуск процесса геокодирования
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}

// Создание обработчика для успешного завершения геокодирования
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
// Если объект был найден, то добавляем его на карту
// и центрируем карту по области обзора найденного объекта
if (this.length()) {
geoResult = this.get(0);
map.addOverlay(geoResult);
map.setBounds(geoResult.getBounds()
}else {
alert("Ничего не найдено")
}
}

// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
})
}

Как сделать так, чтобы скрипт брал данные из базы данных. Нашла кучу информации как выводить информацию, если массив писать в скрипте, а через запрос к БД нет. Или подскажите где взять информацию.

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

javascript-код отрабатывает на клиенте в броузере

и конечно он не может напрямую ходить в базу данных

Прогеокодировать адреса из базы можно и без javascript-а

прочитайте эту статью

natasha.shtokalenko
4 февраля 2012, 17:32

Выходит ошибка

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://geocode-maps.yandex.ru/1.x/?geocode=%D0%9A%D0%.......

Уменя город, улица и дом в разных ячейках таблицы находятся

я сделала вот так

        $xml = simplexml_load_file('http://geocode-maps.yandex.ru/1.x/?geocode='.urlencode($row['org_city'].','.$row['org_street'].','.$row['org_house']).'&key=.....);

Это правильно или нет?

Остальное делала по примеру.

нужно включить опцию allow_url_fopen в php.ini

natasha.shtokalenko
5 февраля 2012, 11:20

Опция allow_url_fopen в php.ini включена, а

allow_url_include выключена.

Пробовала поместить адрес в БД в одну ячейку таблицы, все равно идет та же самая ошибка.

 

 

//Получаем содержимое запроса

function get_url($url){

if( $curl = curl_init() ) {

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);

$out = curl_exec($curl);

curl_close($curl);

return $out;

}else{

return false;

}

}

 

и дальше примерно так

 

$xmldata = get_url('http://geocode-maps.yandex.ru/1.x/?geocode='.$geocode.'&key='.YAPIKEY);

$xml = new SimpleXMLElement($xmldata);

 

 

 

natasha.shtokalenko
5 февраля 2012, 11:46

Выдает ошибку

Fatal error: Call to undefined function curl_init()

а кто мне поможет в моей проблеме