2015-11-04 63 views
1

我是OpenLayers3的新手,尝试构建一个将我的地图集中到给定地点的简单表单。问题是我总是在南极附近的某处登陆。这里是我的代码:setCenter总是在南极附近结束

var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
     new ol.layer.Tile({ 
     source: new ol.source.OSM 
     }) 
    ], 
    view: new ol.View({ 
     center: [0,0], 
     zoom: 8 
    }) 

    search.addEventListener("change", searchChanged); 
    function searchChanged() 
    { 
     var searchVal = encodeURIComponent(search.value); 
     var geocode = 'http://open.mapquestapi.com/nominatim/v1/search.php?key=KEY&format=json&q=' + searchVal; 

     $.getJSON(geocode, function(data) 
      { 
      if(!data) 
       { 
       return; 
       } 
      map.getView().setCenter(ol.proj.transform([data[0].lon, data[0].lat], 'EPSG:4326', 'EPSG:3857')); 
      } 
     ); 
    } 

回答

0

确保您的坐标也不会作为字符串处理:

ol.proj.transform([parseFloat(data[0].lon), parseFloat(data[0].lat]), 'EPSG:4326', 'EPSG:3857') 

更好,调试它:

var coord = ol.proj.transform([parseFloat(data[0].lon), parseFloat(data[0].lat]), 'EPSG:4326', 'EPSG:3857'); 
console.info(coord); 
+0

非常感谢您! –