TypeError:不支持的操作数类型 - :'unicode'和'unicode',coords

use*_*558 5 html python database unicode

完整代码在这里

HTML代码

<input type="hidden" id="Latitude" name="Latitude" value={{Longitude}} />
<input type="hidden" id="Longitude" name="Longitude" value={{Longitude}} />

document.getElementById("Latitude").value  =  position.coords.latitude;
document.getElementById("Longitude").value =  position.coords.longitude;    
Run Code Online (Sandbox Code Playgroud)

app.py

Latitude = request.form['Latitude']
Longitude = request.form['Longitude']

messages = database.returnMessagesinRange(float(Latitude),float(Longitude))
Run Code Online (Sandbox Code Playgroud)

database.py

def returnMessagesinRange(longitude,latitude):
    allMessages = Messages.find()
    messagesinRange = []
    for current in allMessages:
        if ((current['longitude']-longitude) * (current['longitude']-longitude) + (current['latitude']-latitude)*(current['latitude']-latitude)) <= 1:
            if messagesinRange == None:
                messagesinRange = [current['text']]
            else:
                messagesinRange.append(current['text'])
    return messagesinRange
Run Code Online (Sandbox Code Playgroud)

当这个运行时,我明白了

if ((current['longitude']-longitude) * (current['longitude']-longitude) + (current['latitude']-latitude)*(current['latitude']-latitude)) <= 1:
Run Code Online (Sandbox Code Playgroud)
TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么会这样吗?谢谢.

ase*_*max 8

从请求和数据库中检索的经度和纬度都是字符串(unicode字符串),并且您尝试对它们进行操作,就好像它们是数字一样.

你应该先获得intfloat这样的字符串的表示要能够对他们的数字操作(使用-,*等等)

你可以通过创建一个intfloat物体通过字符串作为参数

latitude = int(request.form['Latitude'])
Run Code Online (Sandbox Code Playgroud)

要么

latitude = float(request.form['Latitude'])
Run Code Online (Sandbox Code Playgroud)