2012-03-05 80 views
3

我正在使用谷歌API来自动完成用户地址功能。它的工作正常。 但现在我想使用诺基亚OVI地图进行地址自动完成功能。诺基亚OVI地图自动完成功能

请帮助我如何实现相同。

我使用下面的代码

<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> 

如何获得纬度,经度在此代码

感谢 Shivam

回答

0

我通过阅读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> 

我希望这会对某人有所帮助。

感谢 Shivam

0

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 
});