2025-03-28 23:54:06 +08:00
{% extends "layout.html" %}
{% block title %}
腾讯地图导航
{% endblock %}
{% block main %}
< meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "initial-scale=1.0, user-scalable=no, width=device-width" >
< title > 地点搜索与导航< / title >
<!-- UIkit CSS -->
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/uikit@3.9.2/dist/css/uikit.min.css" / >
<!-- UIkit JS -->
< script src = "https://cdn.jsdelivr.net/npm/uikit@3.9.2/dist/js/uikit.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/uikit@3.9.2/dist/js/uikit-icons.min.js" > < / script >
< style type = "text/css" >
body {
margin: 0;
height: 100%;
width: 100%;
position: absolute;
}
#mapContainer {
width: 100%;
height: 80vh;
position: relative;
}
.search-box {
position: absolute;
top: 20px;
left: 20px;
right: 20px;
z-index: 999;
background: white;
padding: 10px;
border-radius: 3px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.search-results {
position: absolute;
top: 80px;
left: 20px;
right: 20px;
z-index: 998;
background: white;
border-radius: 3px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
max-height: 300px;
overflow-y: auto;
display: none;
}
.search-result-item {
padding: 10px;
border-bottom: 1px solid #eee;
cursor: pointer;
}
.search-result-item:hover {
background-color: #f5f5f5;
}
< / style >
< div class = "search-box" >
< div class = "uk-grid-small" uk-grid >
< div class = "uk-width-1-4" >
< select id = "save_type" class = "uk-select" >
< option value = "recent" > 最近< / option >
< option value = "home" > 住家< / option >
< option value = "work" > 工作< / option >
< / select >
< / div >
< div class = "uk-width-expand" >
< div class = "uk-inline uk-width-1-1" >
< span class = "uk-form-icon" uk-icon = "icon: search" > < / span >
< input class = "uk-input" type = "text" id = "keyword"
placeholder="请输入关键字搜索地点"
autocomplete="off">
< / div >
< / div >
< div class = "uk-width-auto" >
< button class = "uk-button uk-button-primary" onclick = "searchPlace(document.getElementById('keyword').value)" >
< span uk-icon = "icon: search" > < / span > 搜索
< / button >
< / div >
< / div >
< / div >
< div id = "search-results" class = "search-results" > < / div >
< div id = "mapContainer" > < / div >
2025-03-29 10:22:28 +08:00
< script charset = "utf-8" src = "https://map.qq.com/api/gljs?v=1.exp&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC" > < / script >
2025-03-28 23:54:06 +08:00
< script type = "text/javascript" >
var map, marker, infoWindow;
var searchMarkers = [];
var initialPosition;
2025-03-29 10:22:28 +08:00
// 修改路径以确保能找到图标
var markerIconDefault = '../static/marker.png';
var markerIconBlue = '../static/marker.png'; // 使用同一个图标
// 添加Base64编码的备用图标
var markerIconDefaultBase64 = 'data:image/png;base64,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';
var markerIconBlueBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nnnvuFdcMDA8FDh69Xw8BRQnGyDdCY/X1rVpXb1xdGf2CgufMeiF4fY4QTKwvKRLJBPrDw36bQbH+8Vg54nW5XeaEsaX2XMaoktMsZB9OMWjsmaxjXzM6DtgBq+juYZX9s1gHwbtyXnqBLp7YlOLZFckN2gQsfXo76xvgUOrTCzQDlq4gw+KqmiQvbH+vQP7lJPuaCTjiPuDh/6YQY0OHUKb/mFVnvPBCf0+nbQTQE5hDlgPO6JLyY8d94K5IR1QT0qwzsSWlwP+EsdEdpGgIYleQbLKcNH7Yw+iPZu12L8oRgwYGytKmrJRrGmylMNMqLIpvn71lgM3+HAukaiWHY1Ii3ViHxzu4YkmoELpTyjVF9g0IKCnJnJDJxL8QUJjuOWWmdOYCiNyUmgSwBDeCRJ3BkW582zQy3hKXvZXU18CYGMgjBurq8vLiEgbPgwXRDCRFS2RWYFNG6YBC8oQvZQku2XgEPrRP6RgUAAxlpMZsUD82dTip3VORACNXC2LbXAdCXN/btMD8XocjQFC9n7PjwEO0Dv70l52/Px24k1Buu42t0HDmD5mi7LXwJwiU3gUXB/lKsf0XqDeOlQDTIbUFahVp6neifb2j43OjS0PT9xrZklTPQctAm0MQQUq0mcXd9lKCZefPNnUKk0f5zeD+nj2wMDY0FjnxEjU9ufWQgp4QVvRUGg42O0pj4qDoiXj3TmG5Pm0GXEfBw/HWmDeWLDHcZr7E5xVOkCTygXsUYgXKEEWdTcNR+lklL3ab8F72vKn2Fpf5fJQiJTE0XBMQmYrQDqYmzcaGgXeHH6HE+JGJ4pIrDG/u3BaHU3Z1T+6+vYy+1urNG1Dpeqxw+3GQ5xfuQLrHf/c3yY8+f3lySJgkt1e0VAFMd/5KnL3+NZbXUHfmrLFXcszVsy/Gg5dhuPLNrR11PJGMMICAwJNrwQEfVJZiwwbU4p0EX1HUQSQKUUFXdL00bZJnzAIBBfk/h1trGL+hTfdXQovzqb5m9tnh/OzlOPGx8/uTX39ovVccWq9QhwVQppEXY9Bk/cJv/R8UTxIxkiOuM7CZxo4TqwYcWDNApmyiFOdyDXaQEo0dGMDIgkT8kPz85TOx1tmM4VKWC2adWKsHER+GCSITMRUt5AS7tC1UH6jlv6Zcpj7QAFVLjMelBEUBcphQCI6wgG7fWqxMJ1QxMAXwVdOvRT7NdVesrJoFdVrU+y6UO8jaNrNKiZnKAGDiF0a0jCBHW5N9x5mDTaEejDD2q0v616PntKLd21H9fz1X1u2zHXY6qOZ6KW8D00z/3Loyh/Cx2CbZ8wgyQAAAABJRU5ErkJggg==';
// 添加图标加载检查
function checkImageExists(url, callback) {
var img = new Image();
img.onload = function() { callback(true); };
img.onerror = function() { callback(false); };
img.src = url;
}
2025-03-28 23:54:06 +08:00
// 初始化地图
function initMap() {
2025-03-29 10:22:28 +08:00
// 检查图标是否可用
checkImageExists(markerIconDefault, function(exists) {
if (!exists) {
console.error("图标加载失败,尝试其他路径");
// 尝试其他可能的路径
markerIconDefault = '/static/marker.png';
markerIconBlue = '/static/marker.png';
// 如果仍然失败, 使用Base64编码的图标
checkImageExists(markerIconDefault, function(exists) {
if (!exists) {
console.error("备用路径也失败, 使用Base64图标");
markerIconDefault = markerIconDefaultBase64;
markerIconBlue = markerIconBlueBase64;
}
// 现在初始化地图和标记
initMapWithCheckedIcons();
});
} else {
// 图标存在,初始化地图和标记
initMapWithCheckedIcons();
}
});
}
// 使用已检查的图标初始化地图
function initMapWithCheckedIcons() {
// 使用Number()转换确保经纬度是数字
initialPosition = new TMap.LatLng(Number("{{lat}}"), Number("{{lon}}"));
2025-03-28 23:54:06 +08:00
map = new TMap.Map('mapContainer', {
center: initialPosition,
zoom: 15,
2025-03-29 10:22:28 +08:00
showControl: true
2025-03-28 23:54:06 +08:00
});
2025-03-29 10:22:28 +08:00
// 创建当前位置标记
2025-03-28 23:54:06 +08:00
marker = new TMap.MultiMarker({
map: map,
styles: {
2025-03-29 10:22:28 +08:00
"default": new TMap.MarkerStyle({
2025-03-28 23:54:06 +08:00
width: 25,
height: 35,
anchor: { x: 12.5, y: 35 },
2025-03-29 10:22:28 +08:00
src: markerIconDefault
2025-03-28 23:54:06 +08:00
})
},
geometries: [{
id: 'current',
position: initialPosition,
2025-03-29 10:22:28 +08:00
styleId: 'default'
2025-03-28 23:54:06 +08:00
}]
});
// 添加点击事件
map.on('click', handleMapClick);
2025-03-29 10:22:28 +08:00
// 添加标记点击事件
marker.on('click', function(evt) {
showInfoWindow(
evt.geometry.position,
"选定位置",
"(" + evt.geometry.position.lat.toFixed(6) + ", " + evt.geometry.position.lng.toFixed(6) + ")"
);
});
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 处理地图点击
function handleMapClick(evt) {
var position = evt.latLng;
// 进行坐标逆解析,获取地点信息
getAddressByLocation(position, function(result) {
// 更新当前位置标记
marker.updateGeometries([{
id: 'current',
position: position,
styleId: 'default'
}]);
// 使用搜索框文本或逆解析结果显示信息窗口
var keyword = document.getElementById('keyword').value;
if (keyword & & keyword.trim() !== '') {
showInfoWindow(position, keyword, result & & result.address);
} else if (result & & result.address) {
showInfoWindow(position, result.formatted_addresses?.recommend || "选定位置", result.address);
2025-03-28 23:54:06 +08:00
} else {
2025-03-29 10:22:28 +08:00
showInfoWindow(position, "选定位置", `(${position.lat.toFixed(6)}, ${position.lng.toFixed(6)})`);
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 隐藏搜索结果
document.getElementById('search-results').style.display = 'none';
2025-03-28 23:54:06 +08:00
});
}
2025-03-29 10:22:28 +08:00
// 根据坐标获取地址信息
function getAddressByLocation(location, callback) {
var callbackName = 'jsonp_reverseGeo_' + Math.round(100000 * Math.random());
window[callbackName] = function(res) {
// 移除script标签
var scriptTags = document.getElementsByTagName('script');
for (var i = 0; i < script Tags . length ; i + + ) {
if (scriptTags[i].src.indexOf(callbackName) > -1) {
document.body.removeChild(scriptTags[i]);
break;
}
}
if (res.status === 0 & & res.result) {
callback(res.result);
} else {
callback(null);
}
// 清理回调函数
delete window[callbackName];
};
// 构建请求URL
var url = "https://apis.map.qq.com/ws/geocoder/v1/?location=" +
location.lat + "," + location.lng +
"& key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC& output=jsonp& callback=" + callbackName;
// 发送JSONP请求
var script = document.createElement('script');
script.src = url;
script.onerror = function() {
callback(null);
delete window[callbackName];
};
document.body.appendChild(script);
}
// 显示搜索结果
function displaySearchResults(places) {
if (!places || places.length === 0) return;
// 清除之前的搜索标记
clearSearchMarkers();
// 准备标记数据
var geometries = [];
// 创建结果标记
places.forEach(function(place, index) {
var position = new TMap.LatLng(place.location.lat, place.location.lng);
geometries.push({
id: 'search_' + index,
position: position,
styleId: 'default',
properties: {
title: place.title,
address: place.address
}
});
});
// 创建标记图层 - 使用蓝色水滴图标
var resultMarker = new TMap.MultiMarker({
map: map,
styles: {
"default": new TMap.MarkerStyle({
width: 25,
height: 35,
anchor: { x: 12.5, y: 35 },
src: markerIconBlue // 使用蓝色图标
})
},
geometries: geometries
});
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 添加点击事件
resultMarker.on('click', function(evt) {
var position = evt.geometry.position;
var props = evt.geometry.properties;
// 使用正确的标题和地址信息
showInfoWindow(position, props.title, props.address);
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 更新当前标记
2025-03-28 23:54:06 +08:00
marker.updateGeometries([{
id: 'current',
position: position,
2025-03-29 10:22:28 +08:00
styleId: 'default'
}]);
// 隐藏搜索结果
document.getElementById('search-results').style.display = 'none';
});
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 保存到标记数组用于后续清除
searchMarkers.push(resultMarker);
// 调整地图视野以包含所有标记
if (places.length === 1) {
// 单个结果直接定位
map.setCenter(geometries[0].position);
map.setZoom(16);
// 自动打开信息窗口
showInfoWindow(
geometries[0].position,
places[0].title,
places[0].address
);
} else {
// 多个结果时调整视野包含所有标记
var bounds = new TMap.LatLngBounds();
geometries.forEach(function(geo) {
bounds.extend(geo.position);
});
map.fitBounds(bounds);
// 显示提示
UIkit.notification({
message: `找到 ${places.length} 个结果,请点击标记查看详情`,
status: 'success',
pos: 'top-center',
timeout: 3000
});
}
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 显示信息窗口
function showInfoWindow(position, title, address) {
2025-03-28 23:54:06 +08:00
if (infoWindow) {
infoWindow.close();
}
2025-03-29 10:22:28 +08:00
// 获取真实的地点名称和地址
var placeName = title || document.getElementById('keyword').value || "选定位置";
var placeAddress = address || `(${position.lat.toFixed(6)}, ${position.lng.toFixed(6)})`;
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
console.log("显示信息窗口:", placeName, placeAddress);
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 创建信息窗口
2025-03-28 23:54:06 +08:00
infoWindow = new TMap.InfoWindow({
map: map,
position: position,
content: `
2025-03-29 10:22:28 +08:00
< div class = "uk-card uk-card-default uk-card-body" style = "padding:15px; min-width:220px;" >
< h3 style = "margin-top:0; margin-bottom:10px; font-size:16px; font-weight:bold;" > ${placeName}< / h3 >
< p style = "margin:0; color:#666; font-size:14px;" > ${placeAddress}< / p >
< div style = "margin-top:15px; text-align:center;" >
< form name = "navForm" method = "post" onsubmit = "return validateNavForm()" >
< input type = "hidden" name = "lat" value = "${position.lat}" >
< input type = "hidden" name = "lon" value = "${position.lng}" >
< input type = "hidden" name = "save_type" value = "${document.getElementById('save_type').value}" >
< input type = "hidden" id = "place_name_field" name = "place_name" value = "${placeName}" >
< input class = "uk-button uk-button-primary" type = "submit" value = "导航" style = "width:100px;" >
< / form >
2025-03-28 23:54:06 +08:00
< / div >
< / div >
`,
offset: { x: 0, y: -35 }
});
2025-03-29 10:22:28 +08:00
// 打开信息窗口
infoWindow.open();
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 验证导航表单确保地名被传递
function validateNavForm() {
var placeNameField = document.getElementById('place_name_field');
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 如果地名为空,尝试从搜索框获取
if (!placeNameField.value || placeNameField.value === "选定位置") {
var keyword = document.getElementById('keyword').value;
if (keyword & & keyword.trim() !== '') {
placeNameField.value = keyword;
console.log("从搜索框获取地名:", keyword);
}
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 调试输出
console.log("提交导航表单,地名:", placeNameField.value);
return true;
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 搜索地点
2025-03-28 23:54:06 +08:00
function searchPlace(keyword) {
if (!keyword || keyword.trim() === '') {
UIkit.notification({
message: '请输入搜索关键词',
status: 'warning',
pos: 'top-center',
timeout: 3000
});
return;
}
2025-03-29 10:22:28 +08:00
// 显示加载提示
2025-03-28 23:54:06 +08:00
console.log("开始搜索:", keyword);
UIkit.notification({
message: '正在搜索...',
status: 'primary',
pos: 'top-center',
timeout: 2000
});
2025-03-29 10:22:28 +08:00
// 清除之前的标记
clearSearchMarkers();
// 创建JSONP回调
2025-03-28 23:54:06 +08:00
var callbackName = 'jsonp_search_' + Math.round(100000 * Math.random());
2025-03-29 10:22:28 +08:00
// 定义回调函数
2025-03-28 23:54:06 +08:00
window[callbackName] = function(res) {
console.log("搜索结果:", res);
2025-03-29 10:22:28 +08:00
// 移除script标签
var scriptTags = document.getElementsByTagName('script');
for (var i = 0; i < script Tags . length ; i + + ) {
if (scriptTags[i].src.indexOf(callbackName) > -1) {
document.body.removeChild(scriptTags[i]);
break;
}
}
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 处理搜索结果
if (res.status === 0 & & res.data & & res.data.length > 0) {
// 显示搜索结果
displaySearchResults(res.data);
2025-03-28 23:54:06 +08:00
} else {
UIkit.notification({
message: '未找到相关结果',
status: 'warning',
pos: 'top-center',
timeout: 3000
});
}
2025-03-29 10:22:28 +08:00
// 清理回调函数
delete window[callbackName];
2025-03-28 23:54:06 +08:00
};
2025-03-29 10:22:28 +08:00
// 构建搜索请求URL
2025-03-28 23:54:06 +08:00
var searchUrl = "https://apis.map.qq.com/ws/place/v1/search?keyword=" +
2025-03-29 10:22:28 +08:00
encodeURIComponent(keyword) +
"& boundary=region(全国,0)" +
"& page_size=10" +
"& page_index=1" +
"& key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC& output=jsonp& callback=" + callbackName;
2025-03-28 23:54:06 +08:00
2025-03-29 10:22:28 +08:00
// 发送JSONP请求
2025-03-28 23:54:06 +08:00
var script = document.createElement('script');
2025-03-29 10:22:28 +08:00
script.src = searchUrl;
script.onerror = function() {
2025-03-28 23:54:06 +08:00
UIkit.notification({
2025-03-29 10:22:28 +08:00
message: '搜索请求失败,请检查网络连接',
2025-03-28 23:54:06 +08:00
status: 'danger',
pos: 'top-center',
timeout: 3000
});
2025-03-29 10:22:28 +08:00
delete window[callbackName];
};
document.body.appendChild(script);
2025-03-28 23:54:06 +08:00
}
2025-03-29 10:22:28 +08:00
// 清除搜索标记
function clearSearchMarkers() {
searchMarkers.forEach(function(marker) {
marker.setMap(null);
});
searchMarkers = [];
2025-03-28 23:54:06 +08:00
}
// 初始化地图
initMap();
< / script >
2025-03-29 10:22:28 +08:00
{% endblock %}