У меня есть простая функция фляги, которая отображает шаблон с допустимой строкой GeoJSON:
@app.route('/json', methods=['POST'])
def json():
polygon = Polygon([[[0,1],[1,0],[0,0],[0,1]]])
return render_template('json.html',string=polygon)
В моем файле json.html я пытаюсь отобразить этот GeoJSON с помощью OpenLayers:
function init(){
map = new OpenLayers.Map( 'map' );
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: 'basic'} );
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
var fc = {{string}}; //Here is the JSON string
var geojson_format = new OpenLayers.Format.GeoJSON();
var vector_layer = new OpenLayers.Layer.Vector();
map.addLayer(vector_layer);
vector_layer.addFeatures(geojson_format.read(fc));
Но это не удается, и символы "
становятся '
. Я пробовал форматирование строк, как показано в этом вопросе, но это не сработало.
РЕДАКТИРОВАТЬ:
Я забыл сбросить свой json в реальную строку, я использую библиотеку geojson, поэтому добавляю функцию
dumps(polygon)
позаботится об этом, однако я все еще не могу проанализировать GeoJSON в OpenLayers, хотя это допустимая строка в соответствии с geojsonlint.com
Это код Javascript для создания переменной из строки, отправленной из фляги:
var geoJson = '{{string}}';
А вот как это выглядит на исходной странице:
'{"type": "Polygon", "coordinates": [[[22.739485934746977, 39.26596659794341], [22.73902517923571, 39.266115931275074], [22.738329551588276, 39.26493626464484], [22.738796023230854, 39.26477459496181], [22.739485934746977, 39.26596659794341]]]}';
У меня все еще есть проблема с отображением символов кавычек.