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

    Merry Christmas

    obaby发表于 2024-12-25 03:27:22
    love 0

    原本,按照自己的想法是不准备再写文章的。前段时间,自己抽了那么一点点的时间,做了一个个人页面,http://i.oba.by .期间,杜郎杜郎给提了不少建议。但是鉴于自己 ps 修图的水平实在有限,所以最终很多东西也没达到自己想要的效果。

    然而,昨天看下面的足迹地图的时候,发现出问题了,全部被贴上了未获取商用授权的水印。

    这就很离谱,后来登录百度地图开发者,才发现一个问题,那就是认真的时候不小心给认证成了企业开发者,这尼玛就离谱。当时还在想,为什么提示填写企业邮箱更容易认证通过。

    后来才发现,默认就是认证企业开发者,个人开发者被藏在了隐蔽的地方。只能切换账号重新认证。

    不过这么一来,那么地理编码就会出现问题,因为目前接入的地理位置已经超过 30 个。调用这个接口就会收到下面的提示:

    的确,各种限制无处不在。不过好在之前设计的时候给每个地点预留了 gps 坐标信息,如果已经有了 gps 坐标,那么就不会再调用 jsapi 进行解析。

    添加服务端 ak,直接后台处理坐标之后,写入数据库:

    def process_location_cordinate(self, request):
    
        baidu_key_set = MapKey.objects.filter(server_key__isnull=False).last()
        if baidu_key_set is None:
            return ErrorResponse(msg='请先配置百度地图服务端 key')
    
        locations = Location.objects.all()
        successed = []
        for l in locations:
            if l.latitude is None or l.lontitude is None:
                lng,lat = get_location_cordinate(l.name, baidu_key_set.server_key)
                if lng is not None and lat is not None:
                    l.latitude = lat
                    l.lontitude = lng
                    l.save()
                    print(l)
                    successed.append(l)
        return DetailResponse(self.get_serializer(successed, many=True).data)

    地理位置解析代码:

    def get_location_cordinate(location_name, server_key):
        resp = requests.get('https://api.map.baidu.com/geocoding/v3/?address='+location_name+ '&output=json&ak='+ server_key)
    
        print(resp.json())
        js = resp.json()
        if js['status'] == 0:
            return js['result']['location']['lng'],js['result']['location']['lat']
        return None, None

    在处理之前,去后台设置 服务端 ak。

    相关代码已经更新,见开源项目:https://github.com/obaby/BabyFootprintV2

    再次祝大家圣诞快乐,嘻嘻



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