Update tmap_addr_input.html
This commit is contained in:
parent
044e8371a4
commit
b659f68bc8
@ -89,103 +89,101 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-small-top">
|
|
||||||
<button class="uk-button uk-button-default uk-button-small" onclick="locateUser()">
|
|
||||||
<span uk-icon="icon: location"></span> 定位
|
|
||||||
</button>
|
|
||||||
<button class="uk-button uk-button-default uk-button-small" onclick="showSearchHistory()">
|
|
||||||
<span uk-icon="icon: history"></span> 历史记录
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="search-results" class="search-results"></div>
|
<div id="search-results" class="search-results"></div>
|
||||||
<div id="mapContainer"></div>
|
<div id="mapContainer"></div>
|
||||||
|
|
||||||
<!-- 更改腾讯地图API引入方式,增加passive参数,可能会减少一些警告 -->
|
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC"></script>
|
||||||
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC&libraries=geometry"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var map, marker, infoWindow;
|
var map, marker, infoWindow;
|
||||||
var searchTimeout;
|
|
||||||
var searchMarkers = [];
|
var searchMarkers = [];
|
||||||
var initialPosition;
|
var initialPosition;
|
||||||
|
|
||||||
// 修复标记图片URL问题 - 使用腾讯地图官方正确的图标URL
|
// 修改路径以确保能找到图标
|
||||||
var markerIconDefault = 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/marker.png';
|
var markerIconDefault = '../static/marker.png';
|
||||||
var markerIconSelected = 'https://mapapi.qq.com/web/lbs/javascriptV2/javascript/img/marker_red.png';
|
var markerIconBlue = '../static/marker.png'; // 使用同一个图标
|
||||||
var markerIconSearch = 'https://mapapi.qq.com/web/lbs/javascriptV2/javascript/img/marker_blue.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;
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化地图
|
// 初始化地图
|
||||||
function initMap() {
|
function initMap() {
|
||||||
// 修复Jinja变量语法,避免JavaScript解析错误
|
// 检查图标是否可用
|
||||||
|
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}}"));
|
initialPosition = new TMap.LatLng(Number("{{lat}}"), Number("{{lon}}"));
|
||||||
|
|
||||||
map = new TMap.Map('mapContainer', {
|
map = new TMap.Map('mapContainer', {
|
||||||
center: initialPosition,
|
center: initialPosition,
|
||||||
zoom: 15,
|
zoom: 15,
|
||||||
showControl: true,
|
showControl: true
|
||||||
viewMode: '2D' // 明确指定2D模式,可能会减少一些警告
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加当前位置标记 - 使用正确的图标URL
|
// 创建当前位置标记
|
||||||
marker = new TMap.MultiMarker({
|
marker = new TMap.MultiMarker({
|
||||||
map: map,
|
map: map,
|
||||||
styles: {
|
styles: {
|
||||||
"marker": new TMap.MarkerStyle({
|
"default": new TMap.MarkerStyle({
|
||||||
width: 25,
|
width: 25,
|
||||||
height: 35,
|
height: 35,
|
||||||
anchor: { x: 12.5, y: 35 },
|
anchor: { x: 12.5, y: 35 },
|
||||||
src: markerIconDefault
|
src: markerIconDefault
|
||||||
}),
|
|
||||||
"selected": new TMap.MarkerStyle({
|
|
||||||
width: 30,
|
|
||||||
height: 42,
|
|
||||||
anchor: { x: 15, y: 42 },
|
|
||||||
src: markerIconSelected
|
|
||||||
}),
|
|
||||||
"searchResult": new TMap.MarkerStyle({
|
|
||||||
width: 25,
|
|
||||||
height: 35,
|
|
||||||
anchor: { x: 12.5, y: 35 },
|
|
||||||
src: markerIconSearch
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
geometries: [{
|
geometries: [{
|
||||||
id: 'current',
|
id: 'current',
|
||||||
position: initialPosition,
|
position: initialPosition,
|
||||||
styleId: 'marker'
|
styleId: 'default'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加点击事件
|
// 添加点击事件
|
||||||
map.on('click', handleMapClick);
|
map.on('click', handleMapClick);
|
||||||
|
|
||||||
// 初始化搜索服务
|
// 添加标记点击事件
|
||||||
initSearchService();
|
marker.on('click', function(evt) {
|
||||||
}
|
showInfoWindow(
|
||||||
|
evt.geometry.position,
|
||||||
// 初始化搜索服务和联想功能
|
"选定位置",
|
||||||
function initSearchService() {
|
"(" + evt.geometry.position.lat.toFixed(6) + ", " + evt.geometry.position.lng.toFixed(6) + ")"
|
||||||
// 监听输入框,实现联想搜索
|
);
|
||||||
var inputElement = document.getElementById('keyword');
|
|
||||||
|
|
||||||
inputElement.addEventListener('input', function() {
|
|
||||||
var keyword = this.value.trim();
|
|
||||||
if (keyword) {
|
|
||||||
clearTimeout(searchTimeout);
|
|
||||||
searchTimeout = setTimeout(function() {
|
|
||||||
searchSuggestion(keyword);
|
|
||||||
}, 300);
|
|
||||||
} else {
|
|
||||||
document.getElementById('search-results').style.display = 'none';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 防止表单提交刷新页面
|
|
||||||
inputElement.form && inputElement.form.addEventListener('submit', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
searchPlace(inputElement.value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,125 +191,217 @@
|
|||||||
function handleMapClick(evt) {
|
function handleMapClick(evt) {
|
||||||
var position = evt.latLng;
|
var position = evt.latLng;
|
||||||
|
|
||||||
// 清除搜索结果
|
// 进行坐标逆解析,获取地点信息
|
||||||
document.getElementById('search-results').style.display = 'none';
|
getAddressByLocation(position, function(result) {
|
||||||
|
// 更新当前位置标记
|
||||||
// 更新标记位置
|
|
||||||
marker.updateGeometries([{
|
marker.updateGeometries([{
|
||||||
id: 'current',
|
id: 'current',
|
||||||
position: position,
|
position: position,
|
||||||
styleId: 'marker'
|
styleId: 'default'
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
// 对于地图点击,设置一个默认地名 "选定位置"
|
// 使用搜索框文本或逆解析结果显示信息窗口
|
||||||
var coordsText = "(" + position.lat.toFixed(6) + ", " + position.lng.toFixed(6) + ")";
|
var keyword = document.getElementById('keyword').value;
|
||||||
showInfoWindow(position, "选定位置", coordsText);
|
if (keyword && keyword.trim() !== '') {
|
||||||
|
showInfoWindow(position, keyword, result && result.address);
|
||||||
|
} else if (result && result.address) {
|
||||||
|
showInfoWindow(position, result.formatted_addresses?.recommend || "选定位置", result.address);
|
||||||
|
} else {
|
||||||
|
showInfoWindow(position, "选定位置", `(${position.lat.toFixed(6)}, ${position.lng.toFixed(6)})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 显示信息窗口 - 使用搜索框文本作为地名
|
// 隐藏搜索结果
|
||||||
function showInfoWindow(position, name, addr) {
|
document.getElementById('search-results').style.display = 'none';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据坐标获取地址信息
|
||||||
|
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 < scriptTags.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
|
||||||
|
});
|
||||||
|
|
||||||
|
// 添加点击事件
|
||||||
|
resultMarker.on('click', function(evt) {
|
||||||
|
var position = evt.geometry.position;
|
||||||
|
var props = evt.geometry.properties;
|
||||||
|
|
||||||
|
// 使用正确的标题和地址信息
|
||||||
|
showInfoWindow(position, props.title, props.address);
|
||||||
|
|
||||||
|
// 更新当前标记
|
||||||
|
marker.updateGeometries([{
|
||||||
|
id: 'current',
|
||||||
|
position: position,
|
||||||
|
styleId: 'default'
|
||||||
|
}]);
|
||||||
|
|
||||||
|
// 隐藏搜索结果
|
||||||
|
document.getElementById('search-results').style.display = 'none';
|
||||||
|
});
|
||||||
|
|
||||||
|
// 保存到标记数组用于后续清除
|
||||||
|
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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示信息窗口
|
||||||
|
function showInfoWindow(position, title, address) {
|
||||||
if (infoWindow) {
|
if (infoWindow) {
|
||||||
infoWindow.close();
|
infoWindow.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取搜索框的值作为地名
|
// 获取真实的地点名称和地址
|
||||||
var searchText = document.getElementById('keyword').value.trim();
|
var placeName = title || document.getElementById('keyword').value || "选定位置";
|
||||||
var placeName = searchText || name || "选定位置";
|
var placeAddress = address || `(${position.lat.toFixed(6)}, ${position.lng.toFixed(6)})`;
|
||||||
|
|
||||||
// 调试输出
|
console.log("显示信息窗口:", placeName, placeAddress);
|
||||||
console.log("显示信息窗口,搜索框文本:", searchText, "名称:", name, "地址:", addr, "使用地名:", placeName);
|
|
||||||
|
|
||||||
|
// 创建信息窗口
|
||||||
infoWindow = new TMap.InfoWindow({
|
infoWindow = new TMap.InfoWindow({
|
||||||
map: map,
|
map: map,
|
||||||
position: position,
|
position: position,
|
||||||
content: `
|
content: `
|
||||||
<div class="uk-card uk-card-default uk-card-body" style="padding:10px; min-width:200px;">
|
<div class="uk-card uk-card-default uk-card-body" style="padding:15px; min-width:220px;">
|
||||||
<a class="uk-card-badge uk-label" onClick="javascript:infoWindow.close()" uk-close></a>
|
<h3 style="margin-top:0; margin-bottom:10px; font-size:16px; font-weight:bold;">${placeName}</h3>
|
||||||
<h3 style="padding-top: 10px;" class="uk-card-title">${name || ""}</h3>
|
<p style="margin:0; color:#666; font-size:14px;">${placeAddress}</p>
|
||||||
<p>${addr || ""}</p>
|
<div style="margin-top:15px; text-align:center;">
|
||||||
<div class="uk-card-footer" style="padding-top:10px;">
|
<form name="navForm" method="post" onsubmit="return validateNavForm()">
|
||||||
<form name="navForm" method="post">
|
|
||||||
<input type="hidden" name="lat" value="${position.lat}">
|
<input type="hidden" name="lat" value="${position.lat}">
|
||||||
<input type="hidden" name="lon" value="${position.lng}">
|
<input type="hidden" name="lon" value="${position.lng}">
|
||||||
<input type="hidden" name="save_type" value="${document.getElementById('save_type').value}">
|
<input type="hidden" name="save_type" value="${document.getElementById('save_type').value}">
|
||||||
<input type="hidden" name="place_name" value="${placeName}">
|
<input type="hidden" id="place_name_field" name="place_name" value="${placeName}">
|
||||||
<input class="uk-button uk-button-primary" type="submit" value="导航" onclick="console.log('导航表单提交,地点名:', '${placeName}')">
|
<input class="uk-button uk-button-primary" type="submit" value="导航" style="width:100px;">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
offset: { x: 0, y: -35 }
|
offset: { x: 0, y: -35 }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 打开信息窗口
|
||||||
|
infoWindow.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改搜索联想函数,添加错误处理
|
// 验证导航表单确保地名被传递
|
||||||
function searchSuggestion(keyword) {
|
function validateNavForm() {
|
||||||
console.log("搜索联想:", keyword);
|
var placeNameField = document.getElementById('place_name_field');
|
||||||
|
|
||||||
// 避免使用可能导致跨域问题的XMLHttpRequest
|
// 如果地名为空,尝试从搜索框获取
|
||||||
// 直接使用JSONP方法,这是最可靠的
|
if (!placeNameField.value || placeNameField.value === "选定位置") {
|
||||||
var script = document.createElement('script');
|
var keyword = document.getElementById('keyword').value;
|
||||||
var callbackName = 'jsonp_suggestion_' + Math.round(100000 * Math.random());
|
if (keyword && keyword.trim() !== '') {
|
||||||
|
placeNameField.value = keyword;
|
||||||
window[callbackName] = function(res) {
|
console.log("从搜索框获取地名:", keyword);
|
||||||
console.log("联想搜索结果:", res);
|
|
||||||
if (script.parentNode) document.body.removeChild(script);
|
|
||||||
delete window[callbackName];
|
|
||||||
|
|
||||||
if (res.status === 0 && res.data && res.data.length > 0) {
|
|
||||||
showSuggestionResults(res.data);
|
|
||||||
} else {
|
|
||||||
document.getElementById('search-results').style.display = 'none';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var suggestUrl = "https://apis.map.qq.com/ws/place/v1/suggestion?keyword=" +
|
|
||||||
encodeURIComponent(keyword) +
|
|
||||||
"&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC&output=jsonp&callback=" + callbackName;
|
|
||||||
|
|
||||||
script.src = suggestUrl;
|
|
||||||
document.body.appendChild(script);
|
|
||||||
|
|
||||||
// 添加超时处理
|
|
||||||
setTimeout(function() {
|
|
||||||
if (window[callbackName]) {
|
|
||||||
console.error("联想搜索请求超时");
|
|
||||||
document.getElementById('search-results').style.display = 'none';
|
|
||||||
if (script.parentNode) document.body.removeChild(script);
|
|
||||||
delete window[callbackName];
|
|
||||||
}
|
|
||||||
}, 5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示搜索联想结果
|
|
||||||
function showSuggestionResults(results) {
|
|
||||||
var container = document.getElementById('search-results');
|
|
||||||
container.innerHTML = '';
|
|
||||||
|
|
||||||
if (results && results.length > 0) {
|
|
||||||
results.forEach(function(result) {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'search-result-item';
|
|
||||||
div.innerHTML = `
|
|
||||||
<div class="uk-text-bold">${result.title}</div>
|
|
||||||
<div class="uk-text-small uk-text-muted">${result.address || ''}</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
div.onclick = function() {
|
|
||||||
// 获取详细信息
|
|
||||||
getPlaceDetail(result.id);
|
|
||||||
};
|
|
||||||
|
|
||||||
container.appendChild(div);
|
|
||||||
});
|
|
||||||
|
|
||||||
container.style.display = 'block';
|
|
||||||
} else {
|
|
||||||
container.style.display = 'none';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改搜索函数,添加错误处理
|
// 调试输出
|
||||||
|
console.log("提交导航表单,地名:", placeNameField.value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 搜索地点
|
||||||
function searchPlace(keyword) {
|
function searchPlace(keyword) {
|
||||||
if (!keyword || keyword.trim() === '') {
|
if (!keyword || keyword.trim() === '') {
|
||||||
UIkit.notification({
|
UIkit.notification({
|
||||||
@ -323,7 +413,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 显示加载提示和调试信息
|
// 显示加载提示
|
||||||
console.log("开始搜索:", keyword);
|
console.log("开始搜索:", keyword);
|
||||||
UIkit.notification({
|
UIkit.notification({
|
||||||
message: '正在搜索...',
|
message: '正在搜索...',
|
||||||
@ -332,37 +422,29 @@
|
|||||||
timeout: 2000
|
timeout: 2000
|
||||||
});
|
});
|
||||||
|
|
||||||
// 使用唯一的回调函数名称避免冲突
|
// 清除之前的标记
|
||||||
var callbackName = 'jsonp_search_' + Math.round(100000 * Math.random());
|
clearSearchMarkers();
|
||||||
var script = document.createElement('script');
|
|
||||||
|
|
||||||
|
// 创建JSONP回调
|
||||||
|
var callbackName = 'jsonp_search_' + Math.round(100000 * Math.random());
|
||||||
|
|
||||||
|
// 定义回调函数
|
||||||
window[callbackName] = function(res) {
|
window[callbackName] = function(res) {
|
||||||
console.log("搜索结果:", res);
|
console.log("搜索结果:", res);
|
||||||
if (script.parentNode) document.body.removeChild(script);
|
|
||||||
delete window[callbackName];
|
|
||||||
|
|
||||||
if (res.status === 0 && res.data && res.data.length > 0) {
|
// 移除script标签
|
||||||
// 转换返回的数据格式
|
var scriptTags = document.getElementsByTagName('script');
|
||||||
var places = res.data.map(function(item) {
|
for (var i = 0; i < scriptTags.length; i++) {
|
||||||
return {
|
if (scriptTags[i].src.indexOf(callbackName) > -1) {
|
||||||
id: item.id,
|
document.body.removeChild(scriptTags[i]);
|
||||||
title: item.title,
|
break;
|
||||||
address: item.address,
|
}
|
||||||
location: {
|
|
||||||
lat: item.location.lat,
|
|
||||||
lng: item.location.lng
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
// 显示搜索结果列表
|
// 处理搜索结果
|
||||||
showSearchResults(places);
|
if (res.status === 0 && res.data && res.data.length > 0) {
|
||||||
|
// 显示搜索结果
|
||||||
// 在地图上显示多个标记点
|
displaySearchResults(res.data);
|
||||||
showMultipleMarkers(places);
|
|
||||||
|
|
||||||
// 调整地图视野以包含所有结果
|
|
||||||
fitMapToBounds(places);
|
|
||||||
} else {
|
} else {
|
||||||
UIkit.notification({
|
UIkit.notification({
|
||||||
message: '未找到相关结果',
|
message: '未找到相关结果',
|
||||||
@ -371,8 +453,12 @@
|
|||||||
timeout: 3000
|
timeout: 3000
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 清理回调函数
|
||||||
|
delete window[callbackName];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 构建搜索请求URL
|
||||||
var searchUrl = "https://apis.map.qq.com/ws/place/v1/search?keyword=" +
|
var searchUrl = "https://apis.map.qq.com/ws/place/v1/search?keyword=" +
|
||||||
encodeURIComponent(keyword) +
|
encodeURIComponent(keyword) +
|
||||||
"&boundary=region(全国,0)" +
|
"&boundary=region(全国,0)" +
|
||||||
@ -380,300 +466,29 @@
|
|||||||
"&page_index=1" +
|
"&page_index=1" +
|
||||||
"&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC&output=jsonp&callback=" + callbackName;
|
"&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC&output=jsonp&callback=" + callbackName;
|
||||||
|
|
||||||
script.src = searchUrl;
|
// 发送JSONP请求
|
||||||
document.body.appendChild(script);
|
|
||||||
|
|
||||||
// 添加超时处理
|
|
||||||
setTimeout(function() {
|
|
||||||
if (window[callbackName]) {
|
|
||||||
console.error("搜索请求超时");
|
|
||||||
UIkit.notification({
|
|
||||||
message: '搜索超时,请重试',
|
|
||||||
status: 'danger',
|
|
||||||
pos: 'top-center',
|
|
||||||
timeout: 3000
|
|
||||||
});
|
|
||||||
if (script.parentNode) document.body.removeChild(script);
|
|
||||||
delete window[callbackName];
|
|
||||||
}
|
|
||||||
}, 5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改获取地点详情函数
|
|
||||||
function getPlaceDetail(id) {
|
|
||||||
var detailUrl = "https://apis.map.qq.com/ws/place/v1/detail?id=" +
|
|
||||||
encodeURIComponent(id) +
|
|
||||||
"&key=BDMBZ-LZQ63-GUG37-OCHES-2ESXV-Q5BVC&output=jsonp&callback=detailCallback";
|
|
||||||
|
|
||||||
var script = document.createElement('script');
|
var script = document.createElement('script');
|
||||||
script.src = detailUrl;
|
script.src = searchUrl;
|
||||||
document.body.appendChild(script);
|
script.onerror = function() {
|
||||||
|
|
||||||
// 定义全局回调函数
|
|
||||||
window.detailCallback = function(res) {
|
|
||||||
console.log("地点详情:", res);
|
|
||||||
document.body.removeChild(script);
|
|
||||||
|
|
||||||
if (res.status === 0 && res.data) {
|
|
||||||
// 转换数据格式
|
|
||||||
var place = {
|
|
||||||
id: res.data.id,
|
|
||||||
title: res.data.title,
|
|
||||||
address: res.data.address,
|
|
||||||
location: {
|
|
||||||
lat: res.data.location.lat,
|
|
||||||
lng: res.data.location.lng
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
selectPlace(place);
|
|
||||||
} else {
|
|
||||||
UIkit.notification({
|
UIkit.notification({
|
||||||
message: '获取地点详情失败',
|
message: '搜索请求失败,请检查网络连接',
|
||||||
status: 'danger',
|
status: 'danger',
|
||||||
pos: 'top-center',
|
pos: 'top-center',
|
||||||
timeout: 3000
|
timeout: 3000
|
||||||
});
|
});
|
||||||
}
|
delete window[callbackName];
|
||||||
};
|
};
|
||||||
|
document.body.appendChild(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选择地点
|
// 清除搜索标记
|
||||||
function selectPlace(place) {
|
|
||||||
var position = new TMap.LatLng(place.location.lat, place.location.lng);
|
|
||||||
|
|
||||||
// 更新地图视图
|
|
||||||
map.setCenter(position);
|
|
||||||
map.setZoom(16);
|
|
||||||
|
|
||||||
// 更新标记
|
|
||||||
marker.updateGeometries([{
|
|
||||||
id: 'current',
|
|
||||||
position: position,
|
|
||||||
styleId: 'selected'
|
|
||||||
}]);
|
|
||||||
|
|
||||||
// 显示信息窗口
|
|
||||||
showInfoWindow(position, place.title, place.address);
|
|
||||||
|
|
||||||
// 保存到历史记录
|
|
||||||
saveSearchHistory(place);
|
|
||||||
|
|
||||||
// 隐藏搜索结果
|
|
||||||
document.getElementById('search-results').style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 在地图上显示多个标记点 - 修复图标URL
|
|
||||||
function showMultipleMarkers(places) {
|
|
||||||
// 清除之前的搜索结果标记
|
|
||||||
clearSearchMarkers();
|
|
||||||
console.log("显示多个标记点:", places.length);
|
|
||||||
|
|
||||||
// 准备新的标记点数据
|
|
||||||
var geometries = [];
|
|
||||||
|
|
||||||
places.forEach(function(place, index) {
|
|
||||||
// 确保所有必要属性存在
|
|
||||||
if (!place.location || !place.location.lat || !place.location.lng) {
|
|
||||||
console.error("地点数据不完整:", place);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var position = new TMap.LatLng(place.location.lat, place.location.lng);
|
|
||||||
|
|
||||||
geometries.push({
|
|
||||||
id: 'search_' + index,
|
|
||||||
position: position,
|
|
||||||
styleId: 'searchResult',
|
|
||||||
properties: {
|
|
||||||
title: place.title || "",
|
|
||||||
address: place.address || ""
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log("创建几何标记:", geometries.length);
|
|
||||||
|
|
||||||
// 创建新的标记点图层 - 使用正确的图标URL
|
|
||||||
if (geometries.length > 0) {
|
|
||||||
try {
|
|
||||||
var searchResultMarker = new TMap.MultiMarker({
|
|
||||||
map: map,
|
|
||||||
styles: {
|
|
||||||
"searchResult": new TMap.MarkerStyle({
|
|
||||||
width: 25,
|
|
||||||
height: 35,
|
|
||||||
anchor: { x: 12.5, y: 35 },
|
|
||||||
src: markerIconSearch
|
|
||||||
})
|
|
||||||
},
|
|
||||||
geometries: geometries
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加点击事件
|
|
||||||
searchResultMarker.on('click', function(evt) {
|
|
||||||
var properties = evt.geometry.properties;
|
|
||||||
var position = evt.geometry.position;
|
|
||||||
|
|
||||||
// 显示信息窗口
|
|
||||||
showInfoWindow(position, properties.title, properties.address);
|
|
||||||
|
|
||||||
// 更新当前选中标记
|
|
||||||
marker.updateGeometries([{
|
|
||||||
id: 'current',
|
|
||||||
position: position,
|
|
||||||
styleId: 'selected'
|
|
||||||
}]);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 保存到搜索标记数组
|
|
||||||
searchMarkers.push(searchResultMarker);
|
|
||||||
console.log("标记创建成功");
|
|
||||||
} catch (error) {
|
|
||||||
console.error("创建标记时出错:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 清除搜索结果标记
|
|
||||||
function clearSearchMarkers() {
|
function clearSearchMarkers() {
|
||||||
searchMarkers.forEach(function(markerLayer) {
|
searchMarkers.forEach(function(marker) {
|
||||||
markerLayer.setMap(null);
|
marker.setMap(null);
|
||||||
});
|
});
|
||||||
searchMarkers = [];
|
searchMarkers = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调整地图视野以包含所有结果
|
|
||||||
function fitMapToBounds(places) {
|
|
||||||
if (!places || places.length === 0) return;
|
|
||||||
|
|
||||||
// 如果只有一个结果,直接定位到该位置
|
|
||||||
if (places.length === 1) {
|
|
||||||
var position = new TMap.LatLng(places[0].location.lat, places[0].location.lng);
|
|
||||||
map.setCenter(position);
|
|
||||||
map.setZoom(16);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 计算包含所有结果的视野范围
|
|
||||||
var bounds = new TMap.LatLngBounds();
|
|
||||||
places.forEach(function(place) {
|
|
||||||
bounds.extend(new TMap.LatLng(place.location.lat, place.location.lng));
|
|
||||||
});
|
|
||||||
|
|
||||||
// 设置地图视野
|
|
||||||
map.fitBounds(bounds, {
|
|
||||||
padding: 100 // 设置边距,避免标记点太靠近边缘
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示搜索结果 - 修复版本
|
|
||||||
function showSearchResults(results) {
|
|
||||||
console.log("显示搜索结果列表:", results.length);
|
|
||||||
|
|
||||||
var container = document.getElementById('search-results');
|
|
||||||
container.innerHTML = '';
|
|
||||||
|
|
||||||
if (results && results.length > 0) {
|
|
||||||
results.forEach(function(result) {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'search-result-item';
|
|
||||||
div.innerHTML = `
|
|
||||||
<div class="uk-text-bold">${result.title || ""}</div>
|
|
||||||
<div class="uk-text-small uk-text-muted">${result.address || ""}</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
div.onclick = function() {
|
|
||||||
selectSearchResult(result);
|
|
||||||
};
|
|
||||||
|
|
||||||
container.appendChild(div);
|
|
||||||
});
|
|
||||||
|
|
||||||
container.style.display = 'block';
|
|
||||||
} else {
|
|
||||||
container.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加用户定位功能
|
|
||||||
function locateUser() {
|
|
||||||
if (navigator.geolocation) {
|
|
||||||
navigator.geolocation.getCurrentPosition(
|
|
||||||
(position) => {
|
|
||||||
const userPosition = new TMap.LatLng(position.coords.latitude, position.coords.longitude);
|
|
||||||
map.setCenter(userPosition);
|
|
||||||
marker.updateGeometries([{
|
|
||||||
id: 'current',
|
|
||||||
position: userPosition,
|
|
||||||
styleId: 'selected'
|
|
||||||
}]);
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
UIkit.notification({
|
|
||||||
message: '无法获取您的位置,请检查位置权限',
|
|
||||||
status: 'warning',
|
|
||||||
pos: 'top-center',
|
|
||||||
timeout: 3000
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
UIkit.notification({
|
|
||||||
message: '您的浏览器不支持地理定位',
|
|
||||||
status: 'danger',
|
|
||||||
pos: 'top-center',
|
|
||||||
timeout: 3000
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加历史记录功能
|
|
||||||
function saveSearchHistory(item) {
|
|
||||||
let history = JSON.parse(localStorage.getItem('searchHistory') || '[]');
|
|
||||||
// 避免重复添加
|
|
||||||
history = history.filter(h => h.title !== item.title);
|
|
||||||
history.unshift(item);
|
|
||||||
// 最多保存10条记录
|
|
||||||
if (history.length > 10) history.pop();
|
|
||||||
localStorage.setItem('searchHistory', JSON.stringify(history));
|
|
||||||
}
|
|
||||||
|
|
||||||
function showSearchHistory() {
|
|
||||||
const history = JSON.parse(localStorage.getItem('searchHistory') || '[]');
|
|
||||||
if (history.length > 0) {
|
|
||||||
showSearchResults(history);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 选择搜索结果 - 确保title正确传递
|
|
||||||
function selectSearchResult(result) {
|
|
||||||
// 调试输出
|
|
||||||
console.log("选择搜索结果:", result);
|
|
||||||
|
|
||||||
const position = new TMap.LatLng(result.location.lat, result.location.lng);
|
|
||||||
|
|
||||||
// 更新地图视图
|
|
||||||
map.setCenter(position);
|
|
||||||
map.setZoom(16);
|
|
||||||
|
|
||||||
// 更新标记
|
|
||||||
marker.updateGeometries([{
|
|
||||||
id: 'current',
|
|
||||||
position: position,
|
|
||||||
styleId: 'selected'
|
|
||||||
}]);
|
|
||||||
|
|
||||||
// 确保传递完整的title和address
|
|
||||||
showInfoWindow(position, result.title || "", result.address || "");
|
|
||||||
|
|
||||||
// 保存到历史记录
|
|
||||||
saveSearchHistory(result);
|
|
||||||
|
|
||||||
// 隐藏搜索结果
|
|
||||||
document.getElementById('search-results').style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 初始化地图
|
// 初始化地图
|
||||||
initMap();
|
initMap();
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user