2017-01-05 2 views
1

Есть ли способ легко преобразовать мой координатный массив в строку geojson, чтобы я мог легко построить его на карте mapbox-ios?Преобразование координатного массива в строку geojson в swift 3.0

id: 1, lat: 37.54365964, lon: -122.36820328, date: 1483607009.98252 
id: 2, lat: 37.63721702, lon: -122.43994642, date: 1483607387.95026 
id: 3, lat: 37.64117709, lon: -122.44319877, date: 1483607403.98835 
id: 4, lat: 37.64425086, lon: -122.44768593, date: 1483607419.95671 
id: 5, lat: 37.64803999, lon: -122.45107063, date: 1483607435.98718 
id: 6, lat: 37.65210789, lon: -122.45382878, date: 1483607451.98202 
id: 7, lat: 37.65538199, lon: -122.45796869, date: 1483607467.99542 
id: 8, lat: 37.65874435, lon: -122.46226986, date: 1483607483.98868 
id: 9, lat: 37.66271988, lon: -122.46545406, date: 1483607500.00689 
id: 10, lat: 37.66725462, lon: -122.46555909, date: 1483607515.00965 
id: 11, lat: 37.67171694, lon: -122.46680447, date: 1483607530.01121 
id: 12, lat: 37.67577633, lon: -122.46992933, date: 1483607545.96997 
id: 13, lat: 37.68035365, lon: -122.47161149, date: 1483607563.00284 
id: 14, lat: 37.68506394, lon: -122.47132223, date: 1483607579.00677 
id: 15, lat: 37.68971271, lon: -122.47030274, date: 1483607595.01726 
id: 16, lat: 37.69433345, lon: -122.47028874, date: 1483607611.01769 
id: 17, lat: 37.69887099, lon: -122.4712903, date: 1483607627.04018 
id: 18, lat: 37.70344977, lon: -122.47131242, date: 1483607642.97182 
id: 19, lat: 37.7078706, lon: -122.46905887, date: 1483607659.93988 
id: 20, lat: 37.71039615, lon: -122.46428839, date: 1483607675.97476 

Вот образец изображение нарисованной GeoJSON в MapBox КСН: mapbox-ios geojson line

Вот как я положил Lat Lon в массиве

  var coordinates = [Any]() 

     for location in try db.prepare(locations) { 
      print("id: \(location[id]), lat: \(location[lat]), lon: \(location[lon]), date: \(location[date])") 

      var waypoints = [Any]() 
      waypoints.append("\(location[lat])") 
      waypoints.append("\(location[lon])") 
      coordinates.append(waypoints) 
     } 

Это формат пример кода, который я хочу достичь.

func convertLocationArrayToGeoJson(locations: [Any],_:()) -> String { 

    // convert the array of lat lon here to geojson string 

    return "geojson string" 
} 

В результате вывод должен быть чем-то вроде этого:

{ 
"type": "FeatureCollection", 
"features": [{ 
    "type": "Feature", 
    "properties": { 
     "name": "geojson-1" 
    }, 
    "geometry": { 
     "type": "LineString", 
     "coordinates": [ 
      [ 
       longitude1-value, 
       latitude-value1 
      ], 
      [ 
       longitude2-value, 
       latitude2-value 
      ] 

     ] 
    } 
}] 
} 
+0

Можете ли вы показать свою собственную структуру классов. –

+0

@ nirav-d, я обновил вопрос с помощью формата кода и ожидаемого результата. Сможете ли вы помочь? –

+0

Что я говорю, вам нужно показать нам, как вы сохранили это значение long long в массиве? –

ответ

2

Прежде всего изменить создание coordinates массива, как это и добавьте long первый, а затем lat от вы хотите JSON в этом формате.

var coordinates = [Any]() 
for location in try db.prepare(locations) { 

    var waypoints = [Any]() 
    waypoints.append("\(location[lon])") 
    waypoints.append("\(location[lat])") 
    coordinates.append(waypoints) 
} 

Теперь создайте словарь, подобный этому POST json.

let jsonDic: [String: Any] = [ 
           "type": "FeatureCollection", 
           "features": [ 
             [ 
              "type": "Feature", 
              "properties": ["name": "geojson-1"], 
              "geometry": [ 
               "type": "LineString", 
               "coordinates": coordinate 
              ] 
             ] 
            ] 
           ] 

Теперь, если хотите JSON данные или строку, чем вы можете использовать JSONSerialization.data(withJSONObject:options:.

if let data = try? JSONSerialization.data(withJSONObject: jsonDic, options: .prettyPrinted) { 
    //For JSON String 
    let jsonStr = String(bytes: data, encoding: .utf8) 
} 
+0

Спасибо, сработало! –

+0

@MarkAngeloHernandez Добро пожаловать! –

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