zoom (масштабирование) на мобильном устройстве!

Добрый день дорогие форумчане!
Не совсем вот знаю, как нужно искать решение по данному вопросу. Может вы подскажете!

Для отправки веб-приложения на андройд использую PhoneGap.
Задача следующая: необходимо реализовать масштабирование карты с помощью развода или сведение пальцев на сенсорном экране.
Если не добавлять ни каких событий, то масштабирование не работает. Кто нибудь может подсказать, как это сделать или где можно найти информацию!

Заранее большое спасибо!

Тема еще актуальна!

Может есть у кого-то предположения, как это сделать? Многие ведь карту на мобильное устройства пытаются наложить…

Ваше приложение должно ловить события от multitouch.

Вроде бы нашел пример на странице http://openlayers.org/dev/examples/controls.html. Ну а так же есть еще пример на странице http://openlayers.org/dev/examples/mobile-navigation.html в котором говориться что вот, специально для телефонов с мультитатчем… Но пробовал - не работает…

Может все же кому то удалось это сделать?

Очень надо!

может leaflet может http://leaflet.cloudmade.com/

Почему то когда я первый раз встретил leaflet - что т в его описании мне не понравилось… Сейчас вроде бы почитал - все нормально…
Ну если решение не найдется, то придется попробовать leaflet. Может найду с нем нужную мне функцию, ну или просто ее использовать буду.

У меня так то задача: самому написать библиотеку простенькую, для реализации необходимых функций только…

Мультитач в OL нормально работает, надо только контрол соответсвующий вставить:

new OpenLayers.Control.TouchNavigation({dragPanOptions: {enableKinetic: true}}),

В wiki есть статья о том как работает www.OpenTouchMap.org и ссылка на исходники библиотеки TouchMapLight
http://wiki.openstreetmap.org/wiki/OpenTouchMap
http://wiki.openstreetmap.org/wiki/TouchMapLight
Возможно поможет вам как-то…

Max Vasilev, вот один из вариантов, который я пробовал:


controls: [
            new OpenLayers.Control.TouchNavigation({
                dragPanOptions: {
                    enableKinetic: true
                }
            }),
            new OpenLayers.Control.ZoomPanel()
        ]

Можно сказать, как раз не сработал! Да, в инете написано что это рабочий вариант, но по отзывам встречал, что тоже проблемы.

Может я просто как то не так делаю. Если у вас есть возможность, проверте у себя. Вот код мой, чтобы только если чуть поправить:


<script src="http://openlayers.org/dev/OpenLayers.js"></script>
        <script type="text/javascript">
            var map;

function init() {
    map = new OpenLayers.Map({
        div: "map",
        theme: null,
        projection: new OpenLayers.Projection("EPSG:900913"),
        numZoomLevels: 18,
        controls: [
            new OpenLayers.Control.TouchNavigation({
                dragPanOptions: {
                    enableKinetic: true
                }
            }),
            new OpenLayers.Control.ZoomPanel()
        ],
        layers: [
            new OpenLayers.Layer.OSM("OpenStreetMap", null, {
                transitionEffect: 'resize'
            })
        ]
    });
    map.setCenter(new OpenLayers.LonLat(0, 0), 3);
}
        </script>

dudka, посмотрел этот сайт. Используя мультитач ноута, там на самом деле происходит масштабирование, но используя браузеры телефона и щепотку - ни какого эффекта. Проверял в 3х браузерах: Опера, стандартном и xScope.
На счет ссылок - еще не прочитал, может что там найду

Смог пока что отыскать следущую инфу: Чтобы это реализовать нужно каким то образом использовать WebKit. Каким - не знаю…
Нашел вот такие строки:


WebSettings ws = super.appView.getSettings();
	    ws.setSupportZoom(true);
	    ws.setBuiltInZoomControls(true); 

Все равно не сработало(((

Что то у меня уже такое ощущение, что эт не реально((( блииииннн…

leaflet решили частично обойти эту проблему. У них реализовано следущим образом: если прикасаешься 2мя пальцами, то происходит масштабирование. Но опять же минус - выше на уровень не подняться - приходиться кнопкой [-] пользоваться. Хотя я видел что то про то, что можно узнать какое расстояние между 2мя пальцами, может кто делал такое? Если получается можно, то с помощью событий touchdown+touchmove мы сможет обновлять расстояние пальцев и следовательно узнать, приближаются они или удаляются и далее уже с помощью скрипта выполнить масштабирование.

В общем: Тема еще актуальна как минимум до конца недели, а далее - придется просто сделать какой нибудь вариант…

Больше ни у кого мыслей нет, как это сделать.
Пока что откопал следующее:
http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Control/PinchZoom.js?rev=11695 - тут вроде бы скрипт, который должен работать, но как обработать событие - так и не понял.
http://dev.openlayers.org/apidocs/files/OpenLayers/Control/TouchNavigation-js.html#OpenLayers.Control.TouchNavigation.pinchZoomOptions - тут описание встроенного обращения - пробовал - так и не заработало…

Или если кто знает как отловить что на дисплее 2 пальца - подскажите пожалуйста!