IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    创建一个我的足迹地图

    obaby发表于 2024-11-16 09:41:02
    love 0

    在关于我页面,有个个人足迹的图片。

    这个图片最早是通过google maps的足迹地图来生成的。

    谷歌地图

    然而,好景不常,这个东西现在也下架了,今年又去了很多地方,但是这个图片要更新就变得非常麻烦,总不能用ps往上打点吧?这也有点太智障了。于是想着通过地图来实现这个功能,高德或者百度,上午试了一下高德,发现免费的静态地图,最多只能添加10个marker,这尼玛是出来恶心姐姐我的吗?就离谱。

    下午看了下百度的要好很多,于是下午折腾了一下,把足迹点,通过代码拼成url直接添加图片就能显示了,这个还是不错的,最终效果如下:

    其中粉色点点是最起码呆过一段时间的,黄色的点点是途径点。

    处理的代码也比较简单,不过最开始用的高德,于是gps坐标获取用的高德的api,需要提供高德的key。

    静态地图用的百度的,所以又需要百度地图的ak,这个ak必须用服务端的ak哈。全部代码如下,没做配置功能,需要的自己改改代码就行了(运行前 pip install requests 依赖库):

    import time
    
    import requests
    
    
    def amap_geodecode(addr):
        try:
            para = {
                'key': '高德的key',  # 高德地图开放平台申请的key
                'address': addr  # 传入地址参数
            }
            url = 'https://restapi.amap.com/v3/geocode/geo?'  # 高德地图API接口
            req = requests.get(url, para)
            req = req.json()
            print('-' * 30)
            print(req)
            m = req['geocodes'][0]['location']
            print(addr)
            print(m)
        except:
            return None
        return m
    
    
    # 按装订区域中的绿色按钮以运行脚本。
    if __name__ == '__main__':
        url_bast = 'https://api.map.baidu.com/staticimage/v2?ak=<百度的ak>&width=900&height=800&zoom=5&center=103.8319522831,36.0615585627&markerStyles=0xFF0000|0x808000&markers='
        city_list = ['北京','上海','深圳', '东营','连云港','锡林郭勒盟','赤峰','承德','济南','泰安','枣庄','昆明','长沙','湘潭','株洲','日照','威海','烟台','深圳','广州','西安','临沂','潍坊','青岛','大理','清迈','海口','三亚','蜈支洲岛','清莱']
        pass_city_list = ['天津','德州','景德镇','衢州','佛山','无锡']
    
        print('添加点亮城市:')
        cord_list = []
        visited_marker_style_list = []
        for c in city_list:
            m = amap_geodecode(c)
            if m:
                v = '' + m
                cord_list.append(v)
                visited_marker_style_list.append('m,V,0xFF69B4')
            time.sleep(2)
        print('添加途径城市:')
        for c in pass_city_list:
            m = amap_geodecode(c)
            if m:
                v = '' + m
                cord_list.append(v)
                visited_marker_style_list.append('s,P,0xFFFF00')
            time.sleep(2)
    
        print(cord_list)
        print('|'.join(cord_list))
        print('最终url:')
        print(url_bast + '&markerStyles=' + '|'.join(visited_marker_style_list) + '&markers=' + '|'.join(cord_list))

    别问为啥这么搞,问就是懒得改了,哈哈哈。添加图片直接使用最后的url即可。以后足迹点多了之后,修改list重新生成url即可。

    唯一的缺点,不支持国外的坐标,我的泰国的坐标标不上,不过也无所谓了,反正就一个泰国而已。

    更多定制化功能,参考百度地图的相关开发文档:

    https://lbsyun.baidu.com/faq/api?title=static/prepare

    https://lbsyun.baidu.com/faq/api?title=static/markerStatic

    https://lbsyun.baidu.com/faq/api?title=static/heightStatic



沪ICP备19023445号-2号
友情链接