天地图 搜索地址模糊查询坐标并设置中心点实现
// 天地图 搜索地址模糊查询坐标并设置中心点实现 (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); } });