天地图 搜索地址模糊查询坐标并设置中心点实现

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