谷歌地图调用

直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <iframe
  width="1400"
  height="800"
  style="border:0"
  loading="lazy"
  allowfullscreen
  referrerpolicy="no-referrer-when-downgrade"
  src="https://www.google.com/maps/embed/v1/directions?key=(你的谷歌地图API)
  &origin=30.532061728155647, 114.35913349402081
  &destination=30.52901144940713, 114.35757996556374">
</iframe>
  <title>Document</title>
</head>
<body>
  
</body>
</html>

我来详细解释一下参数:

参数类型说明已接受的值
origin必需定义要显示路线的起点。经过网址转义的地点名称、地址、Plus 代码、纬度/经度坐标或地点 ID。 在对空格进行转义时,Maps Embed API 支持 + 和 %20。例如,将“City Hall, New York, NY”转换为 City+Hall,New+York,NY,或将 Plus 代码“849VCWC8+R9”转换为 849VCWC8%2BR9
destination必需定义路线的终点。经过网址转义的地点名称、地址、Plus 代码、纬度/经度坐标或地点 ID。 在对空格进行转义时,Maps Embed API 支持 + 和 %20。例如,将“City Hall, New York, NY”转换为 City+Hall,New+York,NY,或将 Plus 代码“849VCWC8+R9”转换为 849VCWC8%2BR9
waypoints选填指定一个或多个中转地点,以便在出发地和目的地之间规划路线。地点名称、地址或地点 ID。 可以使用竖线字符 (|) 分隔地点(例如 Berlin,Germany|Paris,France),从而指定多个航点。您最多可以指定 20 个航点。
mode选填定义出行方式。如果未指定模式,Maps Embed API 会显示与指定路线最相关的一种或多种模式。drivingwalking(首选步道和人行道,如有)、bicycling(采用自行车道和首选街道(如有)、transit 或 flying
avoid选填指定要在路线中避开的地图项。请注意,这不会排除包含受限地图项的路线,而是会对结果设置偏向,以获得更有利的路线。tollsferries 和/或 highways。 请使用竖线字符分隔多个值(例如 avoid=tolls|highways)。
units选填指定结果中显示距离时的测量方法、公制或英制。如果未指定 units,则查询中的 origin 国家/地区决定要使用的单位。metric 或 imperial
center选填定义地图视图的中心。接受以英文逗号分隔的纬度和经度值;例如:37.4218,-122.0840
zoom选填设置地图的初始缩放级别。值的范围为 0(全世界)到 21(个别建筑物)。上限可能因所选位置的可用地图数据而异。
maptype选填定义要加载的地图图块类型。roadmap(默认)或 satellite
language选填定义界面元素以及在地图图块上显示标签时所用的语言。默认情况下,访问者看到的地图将以自己的语言显示。只有部分国家/地区图块支持此参数;如果图块集不支持请求的特定语言,则将使用该图块集的默认语言。
region选填根据地缘政治敏感性定义要显示的相应边界和标签。接受以双字符(非数字)Unicode 区域子标记的形式指定的区域代码,映射到熟悉的 ccTLD(“顶级域名”)双字符值。如需了解支持的地区,请参阅 Google Maps Platform 覆盖范围详细信息

当然,在给定的代码中,我计算的是从武汉大学信息学部16舍到武汉大学39栋的路线。 

使用Alt+B打开网页,显示内容如下:

 

还有一个小细节,我们在我们手机应用指南针上可以看到我们当前的经纬度,但是谷歌要求的经纬度表示是小数点格式的,这时候就需要我们进行转化,转化的代码如下:

#include <iostream>

double convertToDecimal(int degrees, int minutes, int seconds) {
    double decimal = degrees + (minutes / 60.0) + (seconds / 3600.0);
    return decimal;
}

int main() {
    int latitudeDegrees, latitudeMinutes, latitudeSeconds;
    int longitudeDegrees, longitudeMinutes, longitudeSeconds;

    std::cout << "请输入纬度的度、分、秒:" << std::endl;
    std::cout << "度:";
    std::cin >> latitudeDegrees;
    std::cout << "分:";
    std::cin >> latitudeMinutes;
    std::cout << "秒:";
    std::cin >> latitudeSeconds;

    std::cout << "请输入经度的度、分、秒:" << std::endl;
    std::cout << "度:";
    std::cin >> longitudeDegrees;
    std::cout << "分:";
    std::cin >> longitudeMinutes;
    std::cout << "秒:";
    std::cin >> longitudeSeconds;

    double latitudeDecimal = convertToDecimal(latitudeDegrees, latitudeMinutes, latitudeSeconds);
    double longitudeDecimal = convertToDecimal(longitudeDegrees, longitudeMinutes, longitudeSeconds);

    std::cout << "纬度(十进制):" << latitudeDecimal << std::endl;
    std::cout << "经度(十进制):" << longitudeDecimal << std::endl;

    return 0;
}

由于谷歌地图有偏差,所以我们将转化之后的数据带入进去我们的模型,会不太准确,所谓是否准确,主要是看我们对精度的要求,运行结果可知,大概会偏移几个操场的距离。

不过对于我们来说,我们理论上可以通过添加偏置来使我们得到的坐标和谷歌地图要求的坐标相拟合。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丘小羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值