2015-08-17 9 views
1

Я хотел сделать карту с помощью openlayers, но сосредоточил ее на уникальном пути. Например, у меня есть координата z/x/y 12/2045/-1362, как мне преобразовать ее в долготу/широту? Это совершенно полярная противоположность: How to get X Y Z coordinates of tile by click on Leaflet mapПреобразование xyz координаты плитки в долготу/широту

Мне очень сложно получить логику вышеуказанной ссылки и инвертировать ее. Я надеюсь, что у кого-то здесь есть опыт или готовая формула для этого. Благодаря

Позже я буду это делает центр моей карты, как это:

var z = 12; 
var x = 2045; 
var y = -1362; 

function convertXYZtoCoor(z, x, y) { 
    // code here 
    return [lng, lat]; 
} 

var coor = convertXYZtoCoor(z, x, y); 
var view = new ol.View({ 
        center: ol.proj.transform(
         [coor[0], coor[1]], 'EPSG:4326', 'EPSG:3857'), 
        zoom: z 
      }); 

var map = new ol.Map({ 
       layers: [ 
        new ol.layer.Tile({ 
         source: new ol.source.OSM() 
        }) 
       ], 
       target: 'map', 
       view: view 
      }); 

надеюсь, что мой вопрос Подразумевается больше спасибо.

Edit: Добавлен код

+0

Для меня не ясно, вы ищете [permalink] (http://openlayers.org/en/v3.8.2/examples) /permalink.ht мл # карта = 2/0/0/0)? –

+0

Я прочитал ссылку извините. Нет, вы берете существующий код из созданной мной ссылки и просто изменяете значение центра на основе значения плитки 12/2045/-1362 путем преобразования его в lat/lng. Это возможно? –

+0

Я так не думаю. Давайте посмотрим, что говорят другие, тем временем моя догадка заключается в том, что вы переосмысливаете свой вариант использования. –

ответ

3
var tileExtent = function(tileCoord){ 
    var z = tileCoord[0]; 
    var x = tileCoord[1]; 
    var y = tileCoord[2]; 
    var tileGridOrigin = tileGrid.getOrigin(z); 
    var tileSizeAtResolution = tileGrid.getTileSize(z) * tileGrid.getResolution(z); 
    return [ 
     tileGridOrigin[0] + tileSizeAtResolution * x, 
     tileGridOrigin[1] + tileSizeAtResolution * y, 
     tileGridOrigin[0] + tileSizeAtResolution * (x + 1), 
     tileGridOrigin[1] + tileSizeAtResolution * (y + 1) 
    ]; 
} 

Вы можете проверить/проверить на http://jsfiddle.net/eurx57s7/

Примечание (украденного из Ol3 примера, но это относится здесь к): координаты плитки являются OL3 нормализуется плитка координаты (начало внизу слева), а не координаты плитки OSM (начало вверху слева)

+0

спасибо !! это отличное решение! просто то, что мне нужно –

+0

@AlvinLindstam, может быть, вы поможете мне с этим вопросом: http://gis.stackexchange.com/questions/173646/calculate-tiles-xyz-for-current-view-or-extent-in-openlayers Спасибо ! –

+0

@Alvin Lindstam ... вместо того, чтобы получать результаты при нажатии, возможно ли зарегистрировать созданные фрагменты и сохранить все результаты в каком-то текстовом файле, желательно geojson: {"type": "Feature", "properties": {«tile»: «10, 510, -341»}, «geometry»: {«type»: «Point», «maps»: [-58703.63772301562, 6711782.579664757]}} –

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