地点联想:改用鸿蒙自带 Map Kit,不再走高德 laoyang/FamilyBook#33
用户指示「端侧不用高德,用鸿蒙自带的接口」。 改用 @kit.MapKit 的 site.queryAutoComplete(),顺带解决原方案两个问题: ① 高德 Web 服务 key 是服务端密钥,本不该出现在客户端; ② 线上那个 key 实际是 JS API 类型、调 Web 服务接口一直失败(见 #33 排查记录)。 现在端上不需要任何外部 key,也不需要我们自己的服务端接口与配额。 改动: - FbGeoRepo:site.queryAutoComplete({query}) -> sites[] 取 name + formatAddress + location。 formatAddress 的 SDK 注释原文是 "Formatted detailed address of a place", 正是用户要的「作为参考的详细地址」。 formatAddress 缺失时用 locality + streetName + streetNumber 兜底。 - FbAddrInput:去掉 token 参数(MapKit 鉴权走 AGC 应用认证,与 API 令牌无关)。 - FbEventEditSheet / FbTripNodeSheet:两处调用同步去掉 token。 错误码全部降级为空结果、不打扰用户(声明文件列明的): - 1002600003 App authentication failed - 1002600004 The Map permission is not enabled - 1002603001 Zero result(查不到,属正常业务结果,不刷错误日志) - 1002600002 Failed to connect to the Map Kit server 联想挂掉 => 退化成普通文本框,手敲照常保存。 字段名一律以声明文件 @hms.core.map.site.d.ts 为准: StreetNumber 的字段是 streetName / streetNumber, 第一版凭印象写成 street / number,编译直接报 "Property 'street' does not exist on type 'StreetNumber'",已修正。 编译通过(33 tasks,17 executed)。
This commit is contained in:
@@ -44,8 +44,6 @@ export struct FbAddrInput {
|
||||
@Param placeholder: string = '';
|
||||
/** 当前值(父组件持有,**受控**) */
|
||||
@Param value: string = '';
|
||||
/** API 令牌(空串 = 不联想,纯文本框) */
|
||||
@Param token: string = '';
|
||||
/** 最多显示几条候选(默认 8;端上视口有限) */
|
||||
@Param limit: number = 8;
|
||||
/** 值变化(用户打字 / 选中候选都会触发) */
|
||||
@@ -97,7 +95,9 @@ export struct FbAddrInput {
|
||||
private async search(kw: string): Promise<void> {
|
||||
this.seq += 1;
|
||||
const my: number = this.seq;
|
||||
const list: FbGeoTip[] = await fbGeoTips(kw, this.token, this.limit);
|
||||
/* ⚠️ 不再传 token:改用鸿蒙自带 Map Kit 的 `site.queryAutoComplete()`,
|
||||
鉴权走 AGC 应用认证,与我们的 API 令牌无关(见 FbGeoRepo 文件头)。 */
|
||||
const list: FbGeoTip[] = await fbGeoTips(kw, this.limit);
|
||||
if (my !== this.seq) {
|
||||
return; // 已经有一次更新的输入了,这份丢弃
|
||||
}
|
||||
|
||||
@@ -533,7 +533,6 @@ export struct FbEventEditSheet {
|
||||
label: '地点',
|
||||
placeholder: '地点(可选,输入后可从下拉选)',
|
||||
value: this.fPlace,
|
||||
token: this.token(),
|
||||
onValue: (v: string): void => {
|
||||
this.fPlace = v;
|
||||
}
|
||||
|
||||
@@ -222,7 +222,6 @@ export struct FbTripNodeSheet {
|
||||
label: '地点',
|
||||
placeholder: '如「青岛北站」「崂山区·沙子口」',
|
||||
value: this.place,
|
||||
token: FB_TOKEN_STORE.get(),
|
||||
onValue: (v: string): void => {
|
||||
this.place = v;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user