经纬度制作高清卫星图片免费 API 接口详解

想看巴黎铁塔、八达岭长城,或者直接"看你家楼顶",把坐标丢进去就行。底层由地图服务商瓦片拼接生成,再通过接口盒子的网关返回给你一个 .jpg缓存地址。

特点:

  • 完全免费(接口盒子基础会员即可用,每日调用无上限)
  • ✅ 支持 GET / POST 两种调用方式
  • ✅ 精度可调,最高 zoom=18,能看到建筑轮廓

二、请求说明

项目
请求地址 https://cn.apihz.cn/api/weizhi/weixing.php
请求方式 GET 或 POST
请求编码 UTF-8
返回格式 JSON

三、请求参数

必填参数

参数 名称 说明 示例
id 用户 ID 用户中心的数字 ID 10000000
key 用户 KEY 用户中心通讯秘钥 15he5h15ty854j5sr152hs2
lon 经度 图片生成较慢,建议超时 ≥ 20s 104.6791
lat 纬度 同上 31.4671

可选参数

参数 名称 说明 示例
zoom 缩放级别 1--18,数值越大越精细;17=街区级,18=建筑轮廓级,默认 18。部分地区 18 级可能无数据 18
dkey 动态秘钥 开启动态秘钥验证后需传,防止前端直调泄露 KEY ---
uip 用户 IP 用于后台 IP 统计,彩钻/炫钻/焱钻会员专享 123.123.123.123

四、返回参数

复制代码
{
  "code": 200,
  "msg": "ok",
  "img": "https://接口盒子/imgcache/17817847474517279405.jpg"
}
参数 说明
code 200= 成功,400= 出错
msg 文字提示(成功时一般是 "ok"或空,失败时给原因如"通讯秘钥错误")
img 成功时返回的合成卫星图 CDN 地址,直接 <img>或下载即可

五、GET 调用示例(最快上手)

复制代码
https://接口盒子/api/weizhi/weixing.php?id=88888888&key=88888888&lon=116.3908&lat=39.9163&zoom=18

六、PHP 调用示例

方式一:cURL GET

复制代码
<?php
$id  = '88888888';   // 换成你自己的
$key = '88888888';   // 换成你自己的
$lon = '116.3908';
$lat = '39.9163';
$zoom = 18;
$url = sprintf(
    'https://接口盒子/api/weizhi/weixing.php?id=%s&key=%s&lon=%s&lat=%s&zoom=%s',
    $id, $key, $lon, $lat, $zoom
);
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,   // 图片合成慢,≥20s
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['code'] === 200) {
    echo "卫星图地址:" . $data['img'];
} else {
    echo "错误:" . $data['msg'];
}

方式二:cURL POST

复制代码
<?php
$id  = '88888888';
$key = '88888888';
$lon = '116.3908';
$lat = '39.9163';
$zoom = 18;
$ch = curl_init('https://接口盒子/api/weizhi/weixing.php');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => http_build_query([
        'id'   => $id,
        'key'  => $key,
        'lon'  => $lon,
        'lat'  => $lat,
        'zoom' => $zoom,
    ]),
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);

七、Python 调用示例

方式一:requests GET

复制代码
import requests
ID, KEY = "88888888", "88888888"   # 换成自己的
LON, LAT = "116.3908", "39.9163"
ZOOM = 18
url = "https://接口盒子/api/weizhi/weixing.php"
params = {
    "id": ID,
    "key": KEY,
    "lon": LON,
    "lat": LAT,
    "zoom": ZOOM,
}
r = requests.get(url, params=params, timeout=30)
data = r.json()
if data["code"] == 200:
    print("卫星图地址:", data["img"])
else:
    print("错误:", data["msg"])

方式二:requests POST(推荐)

复制代码
import requests
ID, KEY = "88888888", "88888888"
LON, LAT = "116.3908", "39.9163"
ZOOM = 18
url = "https://接口盒子/api/weizhi/weixing.php"
payload = {
    "id": ID,
    "key": KEY,
    "lon": LON,
    "lat": LAT,
    "zoom": ZOOM,
}
r = requests.post(url, data=payload, timeout=30)
data = r.json()
if data["code"] == 200:
    print("卫星图地址:", data["img"])
    # 如果想直接下载:
    # img_data = requests.get(data["img"]).content
    # with open("satellite.jpg", "wb") as f:
    #     f.write(img_data)
else:
    print("错误:", data["msg"])

八、几个容易踩的坑

  1. 超时一定要设 20s 以上 ------ 图片是服务端现拼的,快的话几秒,慢的话十几秒,默认 5s/10s 必超时。
  2. zoom=18 不是全球都有 ------ 国内主要城市基本齐全,偏远地区可能 17 就是顶了,调用前可以先试一下。
相关推荐
黄林晴1 小时前
KMP 正式支持 SwiftPM:CocoaPods 迁移配置指南
android·ios·kotlin
娇气的红酒1 小时前
微软对PHP支持的改进,及其它一些胡言乱语
开发语言·microsoft·php
霸道流氓气质1 小时前
Harness Engineering 模块化指令实战:告别 600 行巨型 AGENTS.md
开发语言·人工智能·python
吠品2 小时前
Mac定时关机、开机自动化:用shutdown和pmset就够了
android·java·开发语言
asdzx672 小时前
C# 通过模板生成 Word 文档:文本与图片占位符替换完整攻略
开发语言·c#·word
wbs_scy2 小时前
仿 muduo 高并发服务器项目:实现轻量级日志宏,方便后续网络库调试
开发语言·php
Huangjin007_2 小时前
【C++11篇(四)】新的类功能、lambda 与包装器详解
开发语言·c++
2zcode2 小时前
基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab
进击的程序猿~2 小时前
Go Zero源码阅读2
开发语言·后端·golang