Функция автозаполнения карты Nokia OVI - PullRequest
3 голосов
/ 05 марта 2012

Я использую Google API для автозаполнения функции адреса пользователя. и работает нормально. Но теперь я хочу использовать Nokia OVI Map для функции автозаполнения адреса.

Пожалуйста, помогите мне, как реализовать то же самое.

Я использую код ниже

<div id="customSearchBox" class="main-search">
        <span class ="caption">Search For Places:</span>
        <div module="SearchBox">
            <input rel="searchbox-input" class="search-box-bckgrnd" type="text" />
            <div rel="searchbox-list" class="search-list"></div>
        </div>
    </div>
    <script>
        var customSearchBox = new nokia.places.widgets.SearchBox({
            targetNode: 'customSearchBox',
            template: 'customSearchBox',
            searchCenter: function () {
                return {
                    latitude: 52.516274,
                    longitude: 13.377678
                }
            },
            onResults: function (data) {
               //here you have access to data
               alert(data);
            }
        });   
    </script>

Как получить lat, long в этом коде

Спасибо Шивам

Ответы [ 2 ]

0 голосов
/ 20 мая 2012

для jQuery вы можете сделать это так с текстовым полем, потому что я не хотел использовать предопределенный «виджет поиска»:

$('#location_address').autocomplete({
    focus:function (event, ui) {
        return false;
    },
    search:function () {
        $(this).addClass('working');
    },
    open:function () {
        $(this).removeClass('working');
    },
    select:function (event, ui) {
        var position = ui.item.id.split(";");
        var coord = new nokia.maps.geo.Coordinate(parseFloat(position[0]), parseFloat(position[1])) 

        $('#location_address').val(ui.item.label)
        $('#location_longitude')[0].value = coord.longitude;
        $('#location_latitude')[0].value = coord.latitude;
        map.setCenter(coord, "default");
        map.setZoomLevel(16); 
    },
    source:function (request, response) {
        var searchCenter = {
            latitude:52.516274,
            longitude:13.377678
        };
        nokia.places.search.manager.findPlaces({
            searchTerm:request.term,
            onComplete:function (data, status) {

                var nData = data.results.map(function (val, i) {
                    return {
                        value:val.place.name,
                        id:val.place.location.position.latitude + ";" + val.place.location.position.longitude
                    };
                })
                response(nData);

            },
            searchCenter:searchCenter,
            didYouMean:5
        });
    },
    minLength:2
});
0 голосов
/ 12 марта 2012

Я получил ответ на свой вопрос, прочитав документ карты OVI.

<script>
        var customSearchBox = new nokia.places.widgets.SearchBox({
            targetNode: 'customSearchBox',
            template: 'customSearchBox',
            searchCenter: function () {
                return {
                    latitude: 52.516274,
                    longitude: 13.377678
                }
            },
            onResults: function (data) {
               //here you have access to data
               //var a=getData();
               renderResults(data);
               //alert(data.results[0]);
            }
        });  

        function renderResults (data) {
        var previewList = document.getElementById ('results');
        previewList.innerHTML = '';

        var results = data.results;

        for (var i = 0, l = results.length; i < l; i++) {
            var result = results[i];
            var resultLi = document.createElement ('li');
            resultLi.innerHTML = result.place.name+" - Lat:"+result.place.location.position.latitude+" Long:"+result.place.location.position.longitude;
            //alert(result.place.location.position.longitude);
            previewList.appendChild (resultLi);
        }
    }

    </script>

Надеюсь, это кому-нибудь поможет.

Спасибо Шивам

...