// 天地图 搜索地址模糊查询坐标并设置中心点实现 (shangjia_map引用)
window.searchAddress = function(address) {
console.log("待解析地址:", address);
// 构造符合要求的参数对象
const ds = JSON.stringify({
"keyWord": address,
"output": "json",
"region": "" // 可尝试填写城市名,如"北京市"
});
// 确认使用官方最新基础接口地址
const baseUrl = "https://api.tianditu.gov.cn/geocoder";
const url = `${baseUrl}?ds=${encodeURIComponent(ds)}&tk=db77ec7db1957710acbad40069793fc1`;
console.log("请求地址:", url);
$.ajax({
url: url,
type: "GET",
timeout: 5000, // 设置超时时间5秒
success: (data) => {
console.log("API返回数据:", data);
if (data.status === "0" && data.location) {
console.log("解析成功,坐标:", data.location);
// 获取新中心点坐标(注意:天地图经纬度顺序通常是[经度, 纬度])
const newLat = data.location.lat; // 纬度
const newLng = data.location.lon; // 经度
window.defaultCenter = [newLat, newLng]; // 存储新中心点
// 关键:更新地图中心点
if (window.map) { // 假设地图实例存储在全局变量map中
// 移动标记到新坐标
currentLocationMarker.setLatLng(defaultCenter);
// 如果需要同时将地图视图中心也移动到新坐标,可以加上选择地添加下面这行
map.setView(defaultCenter);
} else {
console.error("未找到地图实例,请检查map变量是否正确初始化");
}
} else {
console.log("解析失败,原因:", data.msg || "未知错误");
}
},
error: (xhr, textStatus, errorThrown) => {
// 详细输出错误信息
console.log("请求失败详情:");
console.log("状态码:", xhr.status);
console.log("状态文本:", textStatus);
console.log("错误信息:", errorThrown);
console.log("响应内容:", xhr.responseText);
// 常见错误提示
if (textStatus === "timeout") {
console.log("请求超时,请检查网络连接");
} else if (xhr.status === 401) {
console.log("密钥无效或权限不足,请检查tk");
}
}
});
}
$('.search-btn').on('click', function() {
var address = $('#addr').val();
if (address) {
searchAddress(address);
}
});