一永乌、目前還是雛形,只寫了幾個(gè)功能函數(shù)具伍,且功能函數(shù)未添加錯(cuò)誤處理翅雏,
二、圍欄范圍有限制人芽,圍欄范圍稍微大一點(diǎn)就不能創(chuàng)建望几,而且官方也沒有圍欄范圍大小限制的說明。
import requests,json
key='5d47448e3c3aceff5db10319829c****'#申請(qǐng)的高德地圖API KEY萤厅,申請(qǐng)地址:http://lbs.amap.com/dev/key/app
def get_boundary_gpsinfo(location='芙蓉區(qū)',key):#獲取行政區(qū)域邊界圍欄經(jīng)緯度信息
parameters = { 'key': key,'address': location,'city':'changsha','subdistrict':0,'extensions':'all'}
base = 'http://restapi.amap.com/v3/config/district'
response = requests.get(base, parameters)
answer = response.json()
return answer['districts'][0]["polyline"]#字符串類型
def address_gpsinfo(location='保利麓谷林語',key):#獲取單個(gè)地址經(jīng)緯度信息
parameters = { 'key': key,'address': location,'city':'changsha'}
base = 'http://restapi.amap.com/v3/geocode/geo'
response = requests.get(base, parameters)
answer = response.json()#{'geocodes': [{'level': '興趣點(diǎn)', 'citycode': '0731', 'street': [], 'township': [], 'building': {'type': [], 'name': []}, 'formatted_address': '湖南省長沙市岳麓區(qū)保利麓谷林語', 'location': '112.873718,28.220873', 'number': [], 'province': '湖南省', 'adcode': '430104', 'city': '長沙市', 'district': '岳麓區(qū)', 'neighborhood': {'type': [], 'name': []}}], 'count': '1', 'status': '1', 'info': 'OK', 'infocode': '10000'}
if answer['status'] == '1':
if answer['geocodes']:
return answer['geocodes'][0]['location']#字符串類型
else:
return '無法識(shí)別'
def creat_wl(key):#創(chuàng)建圍欄
parameters = {
"name":"測(cè)試圍欄",
"points":"112.827784,28.248466;112.90486,28.238788;112.896448,28.203394;112.870527,28.192501;112.828127,28.18887",#實(shí)踐當(dāng)中使用變量
"repeat": "Mon,Tues,Wed,Thur,Fri,Sat,Sun",
"enable":"true",#創(chuàng)建圍欄后同時(shí)啟動(dòng)圍欄
"valid_time":"2018-06-08",
}
base = 'http://restapi.amap.com/v4/geofence/meta?key='+key
answer = requests.post(base, json=parameters).json()#{'data': {'gid': 'de90e05b-291c-4ad2-aa39-d5cb165cf3c6', 'id': '0', 'message': '成功', 'status': '0'}, 'errcode': 0, 'errdetail': None, 'errmsg': 'OK'}
return answer['data']['gid']#字符串類型
#def cl_wl(key):#查詢圍欄狀態(tài)橄抹,用處不大
# parameters = {
# 'key':key,
# 'gid':'de90e05b-291c-4ad2-aa39-d5cb165cf3c6'
# }
# base = 'http://restapi.amap.com/v4/geofence/meta'
# response = requests.get(base, parameters)
# answer = response.json()#{'data': {'page_no': 1, 'page_size': 20, 'rs_list': [{'adcode': '0', 'alert_condition': '', 'center': '112.811004,28.327334', 'create_time': '2018-06-07 20:46:25', 'enable': True, 'fixed_date': '', 'gid': 'de90e05b-291c-4ad2-aa39-d5cb165cf3c6', 'id': '0', 'key': '5d47448e3c3aceff5db10319829c****', 'name': '測(cè)試圍欄', 'points': '112.794052,28.342633;112.829071,28.341122;112.828728,28.313319;112.792164,28.312261', 'radius': 2492.03, 'repeat': 'Mon,Tues,Wed,Thur,Fri,Sat,Sun', 'time': '00:00,23:59', 'valid_time': '2018-06-08'}], 'total_record': 1}, 'errcode': 0, 'errdetail': None, 'errmsg': 'OK'}
# return answer
def is_in(key,location='112.810618,28.324955,1528377482'):#判斷是否在圍欄
imei = '865166027325128'
parameters = {
'key':key,
'gid':'de90e05b-291c-4ad2-aa39-d5cb165cf3c6',
'diu':imei,
'locations':location
}
base = 'http://restapi.amap.com/v4/geofence/status'
response = requests.get(base, parameters)
answer = response.json()#{'data': {'fencing_event_list': [{'client_action': 'enter', 'client_status': 'in', 'enter_time': '2018-06-07 21:18:02', 'fence_info': {'fence_center': '112.811005,28.327333', 'fence_gid': 'de90e05b-291c-4ad2-aa39-d5cb165cf3c6', 'fence_name': '測(cè)試圍欄'}}], 'status': 0}, 'errcode': 0, 'errdetail': None, 'errmsg': 'OK'}
if answer['data']['fencing_event_list'][0]['client_status'] == 'in':
print ('給定坐標(biāo)在圍欄里')
else:
print ('給定坐標(biāo)不在圍欄里')