Окно поиска Openstreemap не работает при интеграции в приложение

Я использую следующий код, чтобы установить свойства OSM до отображения карты. Несмотря на то, что появляется окно поиска, я не вижу предложений, когда я набираю название страны.

Пожалуйста, найдите прикрепленный скриншот проблемы - введите описание изображения здесь

Я ищу, чтобы реализовать следующие функциональные возможности - http://labs.easyblog.it/maps/leaflet-search/examples/nominatim.html

angular.extend($scope, {
            london: {
                lat: 51.505,
                lng: -0.09,
                zoom: 4
            },
            controls: {
                draw: {}
            },
            layers: {
                baselayers: {
                    mapbox_light: {
                        name: 'Mapbox Light',
                        url: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
                        type: 'xyz',
                        layerParams: {
                            showOnSelector: false
                        }
                    }
                },
                overlays: {
                    draw: {
                        name: 'draw',
                        type: 'group',
                        visible: true,
                        layerParams: {
                            showOnSelector: false
                        },
                    },
                    search: {
                        name: 'search',
                        type: 'group',
                        visible: true,
                        layerParams: {
                            showOnSelector: false
                        },
                        url: 'http://nominatim.openstreetmap.org/search?format=json&q={s}',
                        jsonpParam: 'json_callback',
                        propertyName: 'display_name',
                        propertyLoc: ['lat','lon'],
                        markerLocation: true,
                        autoCollapse: true,
                        autoType: false,
                        minLength: 2
                    }
                }
            }
        });

1 ответ

Вы можете использовать этот скрипт для автоматического заполнения окна поиска

leafletData.getMap().then(function(map) {
  function searchByAjax(text, callResponse)//callback for 3rd party ajax requests
    {
        $.ajax({
            url: 'url to get auto complete list',   
            type: 'GET',
            data: {q: text},
            dataType: 'json',
            success: function(json) {
                //console.log('in'+json[0].lat);
                var data=new Array();
                $scope.leafletSearchData=json;
                if(json.length>0){
                    for(var i=0;i<json.length;i++){
                        data.push({"loc":[json[i].lat,json[i].lon], "title":json[i].title});
                    }
                }
                callResponse(data);
            }
        });
    }

    var searchControl=new L.Control.Search({callData: searchByAjax, text:'Search ..', markerLocation: true,zoom:16});
    searchControl.on('search_locationfound', function(e) {

    }).on('search_collapsed', function(e) {

    });
    map.addControl( searchControl );}
Другие вопросы по тегам