пятница, 18 января 2013 г.

Мой блог переехал

Решил попробовать вести на livestreet. Мой новый программистский блог. Тут просто надоело, хоть я и пишу редко

среда, 16 января 2013 г.

Прокладка маршрута по всему миру Open Street Map

ВВедение в суть...


В прошлой своей статье я писал о том, как прокладывать маршруты на Google Maps, но, когда дошел до места, где понял, что по России google отказывается прокладывать маршруты, начал искать решение в Open Street Map. Сразу оговорюсь, что используется сервис cloudmade.com, стандартного способа не нашел.

Итак, приступим. Чтобы проложить маршрут, следует сделать запрос вида: http://routes.cloudmade.com/YOUR-API-KEY-GOES-HERE/api/0.3/start_point,[transit_point1,...,transit_pointN],end_point/route_type[/route_type_modifier].output_format[?lang=(Two letter ISO 3166-1 code)][&units=(km|miles)]


Тут следует пояснить формат запроса. Вот оригинал, а ниже перевод своими словами:


Общие параметры

start_pointШирота и долгота начального пункта, разделенные запятой (lat,lon)
end_pointШирота и долгота конечного пункта, разделенные запятой (lat,lon)
route_typeТип маршрута ( машина - "car", пешком - "foot", велосипед - "bicycle")
output_formatФормат результата ( json - "js", xml - "gpx")

Необязательные параметры

transit_pointsПеречисление промежуточных точек. Также их широта и долгота, разделенные запятой. Сами точки тоже разделены запятой [51.2227,4.4120,51.2,4.41]
route_type_modifierНа момент написания статьи доступны следующие значения:
Кратчайший путь - "shortest"
Быстрейший путь - "fastest"
Используется только для маршрута типа "car"
langЯзык ответа: de, en, es, fr, hu, it, nl, ro, ru, se, vi, zh.
Добавить свой перевод тут: Routing_translation
units(km or miles). Default - km
callbackoptional parameter for JS response, if specified response will be wrapped into the function call. e.g. if callback=routeLoaded, response will be routeLoaded(JSON_object)
Примеры:

На самом деле всё и без перевода ясно в документации. Вообщем перевод для людей, которые учили в школе немецкий =).

Далее лично у меня возникает вопрос этичности. Как я знаю, у гугла достаточно мочный фреймворк для работы с его картой и я уже имел некоторый опыт работы с их картой. Также координаты OSM и google Maps совпадают. Может брать маршруты у cloudmade и рисовать их на карте гугла?

Заметки по yii

Подключить js
Yii::app()->clientScript->registerScriptFile("/js/checkers.js");
Ошибка 404

throw new CHttpException(404,'The requested page does not exist.');
Является ли запрос ajax
if(Yii::app()->getRequest()->getIsAjaxRequest()) {
echo CActiveForm::validate( array( $model)); 
Yii::app()->end(); 
}

if(Yii::app()->request->isAjaxRequest) { $this->renderPartial('_ajaxContent',$data); } else { $this->render('index',$data); }

Простой способ настроить прокси на Ubuntu


проще всего делать форвард траффика через rinetd:

apt-get install rinetd

root@server:/etc# nano rinetd.conf
     тут пишем в формате # bindadress    bindport  connectaddress  connectport
root@server:/etc# echo "rinetd_enable=YES" >> /etc/rc.conf
root@server:/etc# /etc/init.d/rinetd restart

Прокси готов, через iptables тоже можно, но там куча заморочек