【问题标题】:Limit mapbox geocoder api calls for address autocomplete限制 mapbox geocoder api 调用地址自动完成
【发布时间】:2020-07-19 16:26:31
【问题描述】:

我有一个接受搜索查询字符串的输入框和一个根据 API 调用的响应填充的下拉列表。

我希望将 api 调用限制为仅在用户输入 6 个或更多字符时调用,而不是对每个查询笔划进行调用。

这是我可以传递的可选参数吗?下面是我的代码。

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

我正在为 mapbox 网络服务使用 python 客户端:https://github.com/mapbox/mapbox-sdk-py

【问题讨论】:

    标签: python mapbox google-places-api geocoding plotly-dash


    【解决方案1】:

    您可以只检查 arg 的长度,并且仅在超过 5 时才进行调用。否则阻止更新。

    @app.callback(Output('address_dropdown', 'options'),
                  [Input('address_autocomplete', 'value')])
        def autocomplete_address(value):
            if len(value) < 6:
                raise dash.exceptions.PreventUpdate
            # the rest of the function
            ...  
    

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多