Объект типа 'Response' не поддерживает сериализацию JSON и продолжает возвращаться - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь создать интерактивную панель с графикой и графикой.Моя цель - добавить точки данных (широта, долгота) на карту Mapbox.Создание карты статически с точками данных работает хорошо, но мне нужно, чтобы в раскрывающемся списке я указывал точки данных, отображаемые на карте.

Мне кажется, проблема в том, что каждый раз, когда я пытаюсь передать данные на карту, они имеют неправильный формат.Код ошибки, соответствующий коду ошибки: Объект типа 'Response' не поддерживает сериализацию JSON

Я пытался преобразовать данные в jason с помощью jasonify и json.dumps (objects).Я также прочитал многие подобные вопросы (относительно моей ошибки) на форуме / в Интернете, но ни один из них не помог мне разобраться в моей проблеме.

Я обычно использую учебные пособия и изменяю код.У меня есть графики, выпадающие списки и т. Д., Которые работают аналогичным образом.Но карта не сработает.

Может кто-нибудь объяснить мне, что я делаю не так?Я хотел бы извлечь урок из ответа, и я еще не настолько талантлив в программировании на Python.

Если у вас есть какие-либо вопросы или если я недостаточно детализирован, дайте мне знать.

Привет Стефан

Ниже мой код:

from flask import jsonify
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
import plotly.plotly as py
import pyodbc
from sqlalchemy import create_engine
import numpy as np

mapbox_access_token = 'pk.eyJ1Ijoic2VtcGFoIiwiYSI6ImNqbHBoaXU5YjF5bHkzcHBncXFkejl0MjAifQ.0R2VfR5a8_owewhbx16a6w'

app = dash.Dash(__name__)
app.config['supress_callback_exceptions']=True

all_options = {
    'Company1': ['52.33076869999999', '4.914620499999955'],
    'Company2': [u'52.0916142', '5.106795599999941']
}

dict1 = {'name': 'Company1', 'lat': '52.33076869999999', 'lon': '4.914620499999955'}

dict2 = {'name': u'Company2', 'lat': '52.0916142', 'lon': '5.106795599999941'}


latitude = []
longtitude = []

def set_cities_value(available_options):
    return available_options[0]['value']

@app.callback(
    dash.dependencies.Output('display-selected-values', 'children'),
    [dash.dependencies.Input('company-dropdown', 'value')])
     

@app.callback(
    dash.dependencies.Output('graph', 'children'),
    [dash.dependencies.Input('company-dropdown', 'value')])

def set_display_children(selected_company):
    if selected_company == 'Company1': 

        lat = dict1['lat']
        lon = dict1['lon']
        
        latitude.append(lat)
        
        longtitude.append(lon)
        
        print(latitude)
        print(longtitude)

    else:
        
        lat = dict2['lat']
        lon = dict2['lon']

        latitude.append(lat)
        longtitude.append(lon)

        

datamap = [
    go.Scattermapbox(
        lat=  latitude,
        lon=  longtitude,
        mode='markers',
        marker=dict(
            size=10
        ),
        text=['Testing'],
    )
]

layoutmap = go.Layout(
    autosize=False,
    margin={
    't':10
    },
    height=700,
    hovermode='closest',
    mapbox=dict(
        accesstoken=mapbox_access_token,
        bearing=0,
        center=dict(
            lat=52.090737,
            lon=5.12142
        ),
        pitch=0,
        zoom=6.6,
        style='light',
    ),
)

fig = dict(data=datamap, layout=layoutmap)
   
app.layout = html.Div([
    dcc.Dropdown(
        id='company-dropdown',
        options=[{'label': k, 'value': k} for k in all_options.keys()],
        value='Company1'
    ),

    html.Hr(),

    dcc.Graph(id='graph', figure=fig),

    html.Hr(),

    html.Div(id='display-selected-values')
])


if __name__ == '__main__':
    app.run_server(debug=True)
...