首页 > 解决方案 > plotly-dash:使用 google places / mapbox api 在下拉列表/文本字段中自动完成地址

问题描述

我有一个地址字段和一个下拉列表,我打算在其中填充来自 mapbox API 的自动完成建议。在回调中,我从 input 传递查询字符串id='address_autocomplete'。但是,我没有看到函数人口下拉菜单返回的值。

dbc.InputGroup(
           [
               dbc.InputGroupAddon("Property Address"),
               dcc.Input(id='address_autocomplete'),
               dcc.Dropdown(id='address_dropdown',style={'width':'60%'})
           ],
           style={'margin-top':'30px', 'width': '53%', 'float': 'left'},
       ),



# Property address autocomplete
@app.callback(Output('address_dropdown', 'options'),
              [Input('address_autocomplete', 'value')])

    def autocomplete_address(value):
    
        print(value)
    
        addr = {}
    
        # Call mapbox API and limit Autocomplete address suggestions
        ret_obj = geocoder.forward(value, lon=-112.0913905, lat=33.4514652, limit=3)
        response = ret_obj.json()
    
        for i in range(len(response['features'])):
    
            addr["res{}".format(i)] = response['features'][i]['place_name']
    
        if value:
    
            return [{'label': addr['res_0'], 'value': addr['res_0']},
                    {'label': addr['res_1'], 'value': addr['res_1']},
                    {'label': addr['res_2'], 'value': addr['res_2']}]


# Function call
r = geocoder.forward('Washington Park', lon=-112.0913905, lat=33.4514652, limit=3)
rj = r.json()

# Return

Washington Park, Phoenix, Arizona 85015, United States
Washington Park Playground, Phoenix, Arizona 85015, United States
Washington Park, Chicago, Illinois 60637, United States

标签: pythonmapboxgoogle-places-apiplotly-dash

解决方案


推荐阅读