现在没有方向把从单片机收到的20组两个十六进制数组成的WGS84坐标转化成腾讯地图可视化然后放到网页上(最好能实时转化,因为单片机是不断向服务器发送坐标的)
使用Python编写一个服务器程序,用于接收单片机发送的坐标数据。可以使用socket进行通信,也可以使用Flask等Web框架搭建Web服务。
将收到的WGS84坐标转换为腾讯地图坐标。可以使用腾讯地图提供的JavaScript API中的坐标转换接口,也可以使用Python中的第三方库进行坐标转换。
使用前端技术(如Vue.js、React等)编写一个网页,用于展示腾讯地图,并将实时收到的坐标数据在地图上进行可视化展示。可以使用腾讯地图提供的JavaScript API来实现地图展示和标注功能。
在服务器程序中将收到的坐标数据发送给前端网页,实现实时更新坐标的效果。可以使用WebSocket或者HTTP长连接等技术实现。
编写Python服务器程序
使用Python中的socket模块编写一个服务器程序,接收单片机发送的坐标数据。示例代码如下:
import socket
HOST = '' # 监听所有网络接口
PORT = 8888 # 监听端口号
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口号
s.bind((HOST, PORT))
# 开始监听
s.listen(1)
while True:
# 等待客户端连接
conn, addr = s.accept()
print('Connected by', addr)
while True:
# 接收数据
data = conn.recv(1024)
if not data:
break
# 处理数据
# ...
# 关闭连接
conn.close()
将WGS84坐标转换为腾讯地图坐标
可以使用第三方库pyproj进行WGS84坐标与墨卡托投影坐标的转换。示例代码如下:
import pyproj
# 定义WGS84坐标系和腾讯地图墨卡托投影坐标系的转换
wgs84 = pyproj.Proj('EPSG:4326')
tencent = pyproj.Proj('EPSG:3857')
# 将WGS84坐标转换为腾讯地图坐标
lng, lat = 121.48, 31.22 # 示例数据,需要替换为实际坐标数据
x, y = pyproj.transform(wgs84, tencent, lng, lat)
编写前端网页
使用前端技术编写一个网页,用于展示腾讯地图,并将实时收到的坐标数据在地图上进行可视化展示。示例代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>坐标可视化示例</title>
<style>
#map {
width: 100%;
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="https://map.qq.com/api/gljs?v=1.exp&key=YOURKEY"></script>
<script>
// 初始化地图
var map = new qq.maps.Map(document.getElementById("map"), {
center: new qq.maps.LatLng(39.916527,116.397128),
zoom: 13
});
// 添加标记
function addMarker(lng, lat) {
var marker = new qq.maps.Marker({
position: new qq.maps.LatLng(lat, lng),
map: map
});
}
// 连接WebSocket服务器
var ws = new WebSocket("ws://localhost:8889");
// 接收坐标数据并更新地图
ws.onmessage = function(event) {
var data = JSON.parse(event.data);
addMarker(data.lng, data.lat);
};
</script>
</body>
</html>
在服务器程序中将坐标数据发送给前端网页
使用WebSocket将收到的坐标数据发送给前端网页,实现实时更新坐标的效果。示例代码如下:
import json
import socket
import threading
import time
import websocket
定义WGS84坐标系和腾讯地图墨卡托投影坐标系的转换:
wgs84 = pyproj.Proj('EPSG:4326')
tencent = pyproj.Proj('EPSG:3857')
连接WebSocket服务器:
def on_open(ws):
print('WebSocket连接成功')
def on_message(ws, message):
print('收到坐标数据:', message)
data = json.loads(message)
# 将WGS84坐标转换为腾讯地图坐标
lng, lat = data['lng'], data['lat']
x, y = pyproj.transform(wgs84, tencent, lng, lat)
# 发送坐标数据给前端网页
ws.send(json.dumps({'lng': x, 'lat': y}))
def on_error(ws, error):
print('WebSocket连接出错:', error)
def on_close(ws):
print('WebSocket连接关闭')
websocket.enableTrace(True)
ws = websocket.WebSocketApp('ws://localhost:8888',
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)
thread = threading.Thread(target=ws.run_forever)
thread.daemon = True
thread.start()
发送坐标数据给单片机:
def send_coordinate():
while True:
# 从单片机接收坐标数据
data = b'\x12\x34\x56\x78\x9a\xbc\xde
如果回答对您有所帮助,望采纳。
依然借助上面的例子
print(9 in dict1) #返回True
print(10 in dict1) #返回False