Как открыть маркер извне карты в openstreetmap?

Я использую openstreetmap в своем проекте, ранее я использовал карту Google в этом проекте, но лимит запросов ниже, чем требуется моему клиенту, и он не может позволить себе то, что Google принимает для увеличения лимита запросов, поэтому мне пришлось переключиться на openstreetmap, я Я много ищу в документации openstreetmap, но не понимаю, как открыть маркер по ссылке, которая находится за пределами карты, не могли бы вы помочь мне в решении этой проблемы. Это будет для меня огромным подспорьем.

заранее спасибо

Привет, я сам решил, это код для открытия всплывающего окна маркера за пределами карты.

       function openMarker(id,lon,lat,html) 
       {
        jQuery(".olPopup").remove();
        marklonLat = new OpenLayers.LonLat(lon,lat)
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            map.getProjectionObject() // to Spherical Mercator Projection
        );

        var size = new OpenLayers.Size(200,200);
        popup = new OpenLayers.Popup(id,marklonLat,size,html,true,'' , {keepInMap: true });

        map.addPopup(popup);
    }

jQuery (". olPopup"). remove (); - Это закроет все всплывающие окна на карте, прежде чем вы откроете новое всплывающее окно.

html - это контент, который будет во всплывающем окне


person Ravinder Singh    schedule 09.04.2012    source источник
comment
openstreetmap - это просто данные. Вы должны использовать что-то еще для рисования карты, фреймворк веб-карт, такой как OpenLayers или Leaflet. Который? Старайтесь не путать данные с картографической структурой. В картах Google данные и каркас карт очень тесно связаны.   -  person Spacedman    schedule 09.04.2012
comment
Я использую OpenLayers для рисования карты ...   -  person Ravinder Singh    schedule 09.04.2012
comment
Так что теперь перепишите свой вопрос. Вам нужна ссылка (тег HTML A?), Которая, когда люди нажимают на нее, показывает маркер в каком-то месте (решили, как?) На карте? Это оно?   -  person Spacedman    schedule 09.04.2012
comment
Привет, я решил это сам, спасибо, что проявили интерес к помощи.   -  person Ravinder Singh    schedule 10.04.2012
comment
Теперь я хочу сделать что-то важное, чего я никогда раньше не делал, вот что я делаю, я показываю список людей слева, а справа я показываю их адреса на карте, хорошо Теперь я хочу для этого всякий раз, когда кто-то увеличивает или уменьшает масштаб карты, он обновляет список слева, он должен показывать только людей слева, которые видны на карте для этого увеличения, поэтому таким образом он будет всегда показывать тех людей слева, которых пользователь может видеть на карте. как вы думаете, это есть в API openLayer?   -  person Ravinder Singh    schedule 10.04.2012
comment
Зарегистрируйте eventListeners в 'zoomend' и 'moveend', затем они вызывают некоторый JS-код для фильтрации вашего списка на основе нового экстента. См. Пример «событий» в документации по openlayers.   -  person Spacedman    schedule 10.04.2012
comment
можем ли мы получить все данные, которые есть на карте, всякий раз, когда мы увеличиваем или уменьшаем масштаб, очень любопытно это знать.   -  person Ravinder Singh    schedule 10.04.2012
comment
Переберите элементы слоя и проверьте свойство onScreen.   -  person Spacedman    schedule 10.04.2012


Ответы (1)


Просто попробуйте это:

Передайте уникальный идентификатор маркера, долготу, широту и html, который вы хотите показать во всплывающей подсказке.

function openMarker(id,lon,lat,html) 
    {
        jQuery(".olPopup").remove();
        marklonLat = new OpenLayers.LonLat(lon,lat)
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            map.getProjectionObject() // to Spherical Mercator Projection
        );

var size = new OpenLayers.Size(200,200); popup = new OpenLayers.Popup(id,marklonLat,size,strhtml,true,'' , {keepInMap: true }); map.addPopup(popup); }

person Ravinder Singh    schedule 22.04.2012