2015-02-07 2 views
3

У меня есть массив Lat Longs в массиве с именем lat_longs (который выглядит так: [[39.749318, -104.9701129], [..], [..]]), я пытаюсь построить их в OpenStreetMap с использованием Open Layers 3. Здесь код у меня есть -Open Layers 3 - Convert Lat Long to Point

var icon_features = []; 

$.each(lat_longs, function(index, item){ 
    var point = new ol.geom.Point(item); 
    point.transform('EPSG:4326', 'EPSG:900913'); 
    // I tried it the other way too, but doesn't seem to work 

    var iconFeature = new ol.Feature({ 
     geometry: point, 
     name: item.name 
    }); 

    icon_features.push(iconFeature); 
}); 

var vectorSource = new ol.source.Vector({ 
    features: icon_features 
}); 

var vectorLayer = new ol.layer.Vector({ 
    source: vectorSource 
}); 

var view = new ol.View({ 
    center: [0,0], 
    zoom: 2 
}); 

var map = new ol.Map({ 
    layers: [ 
     new ol.layer.Tile({ 
      source: new ol.source.OSM() 
     }), 
     vectorLayer 
    ], 
    target: 'map', 
    controls: ol.control.defaults({ 
     attributionOptions: ({ 
     collapsible: false 
    }) 
    }), 
    view: view 
}); 

по какой-то причине, как представляется, либо откладывая расположение вблизи Африки или не откладывая место на всех.

Как исправить это?

я нашел коды делать прогнозы и трансформирует в открытых слоев 2. Не удалось точно найти, как это сделать в открытых слоев 3.

Примечание: я получил это работает с tsauerwein комментарий «s , Но обратите внимание, я должен был преобразовать точку из EPSG:4326 в EPSG:900913

+2

Являются ли координаты '[lat, lon]' или '[lon, lat]'? ol3 ожидает '[lon, lat]'. – tsauerwein

+0

Ah .. Они [lat, lon] .. Позвольте мне попробовать инвертировать их с помощью разных EPSG. –

+0

Хорошо, реверсирование их работало как шарм! Можете ли вы опубликовать его в качестве ответа? Надеюсь, это поможет кому-то. –

ответ

1

OpenLayers ожидает координаты быть [lon, lat] вместо [lat, lon]. Поэтому в вашем случае вам придется изменить порядок.

+0

Интересно, сколько раз люди ошибались (включая меня), я понимаю, что есть небольшая проблема с производительностью, но почему бы не использовать что-то вроде '{" lon ": lon," lat ": lat}' или object with '. lat' и '.lon'? –

Смежные вопросы