原本,按照自己的想法是不准备再写文章的。前段时间,自己抽了那么一点点的时间,做了一个个人页面,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
再次祝大家圣诞快乐,嘻嘻