Решил попробовать вести на livestreet. Мой новый программистский блог. Тут просто надоело, хоть я и пишу редко
пятница, 18 января 2013 г.
среда, 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)]
Тут следует пояснить формат запроса. Вот оригинал, а ниже перевод своими словами:
Примеры:
http://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/47.25976,9.58423,47.26117,9.59882/car/shortest.jshttp://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/47.25976,9.58423,47.26117,9.59882/bicycle.gpxhttp://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/51.22545,4.40730,[51.22,4.41,51.2,4.41],51.23,4.42/car.js?lang=de&units=miles
В прошлой своей статье я писал о том, как прокладывать маршруты на 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 |
| callback | optional 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) |
http://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/47.25976,9.58423,47.26117,9.59882/car/shortest.jshttp://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/47.25976,9.58423,47.26117,9.59882/bicycle.gpxhttp://routes.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/api/0.3/51.22545,4.40730,[51.22,4.41,51.2,4.41],51.23,4.42/car.js?lang=de&units=miles
На самом деле всё и без перевода ясно в документации. Вообщем перевод для людей, которые учили в школе немецкий =).
Далее лично у меня возникает вопрос этичности. Как я знаю, у гугла достаточно мочный фреймворк для работы с его картой и я уже имел некоторый опыт работы с их картой. Также координаты OSM и google Maps совпадают. Может брать маршруты у cloudmade и рисовать их на карте гугла?
Заметки по yii
Подключить js
Yii::app()->clientScript->registerScriptFile("/js/checkers.js");
Ошибка 404
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
root@server:/etc# echo "rinetd_enable=YES" >> /etc/rc.conf
root@server:/etc# /etc/init.d/rinetd restart
Прокси готов, через iptables тоже можно, но там куча заморочек
Подписаться на:
Сообщения (Atom)
Разделы
- БД (3)
- Не по теме (4)
- Полезное (3)
- Практика (8)
- Разработка компонентов (14)
- Хостинг (2)
- Joomla (29)
- Joomla классы (6)
- linux (2)
- PHP (33)