0

我的目标是在用户询问方向时识别用户是否已经在谷歌地图方向搜索结果中给出的街道之一(即使不是在完全相同的坐标中)。

它是这样发生的:
当用户只是浏览街道时,应用程序会不时地使用地理编码 API 向谷歌询问用户在哪里。然后它注册它(我仍然需要知道我应该使用哪些信息)。

在未来的另一个时间,用户会询问到他想去的特定地方的路线,应用程序会询问谷歌地图的替代方案,然后它将决定使用哪条路径,如果用户愿意的话根据配置,尽可能多地识别他的进步或相反。

问题是我不知道将什么用作每条街道的唯一标识符。

注意:目前我没有将大街道划分为扇区。这样应该更容易。Ofc,如果这比考虑整条街道更容易,我会将街道划分为扇区。

我已经测试过我不能使用用户所在位置的坐标。为了不与附近的街道重叠并提供良好的精度,即使被截断,我也无法使用坐标。
我还检查了当我问路时,使用地理编码返回的地点的名称似乎不可用。方向 api 不会使用相同的标识符命名街道......

请帮忙

提前致谢。

4

1 回答 1

0

我知道你现在可能已经继续前进或想通了,但我会告诉你我会做什么。

如果我想识别可能熟悉的街道,我会将街道上的街区识别为一组起点和终点坐标。您可以检查是否接近块的末端。

您应该能够通过对块上某个点的地址进行地理编码并将地址行字符串用空格拆分来找到块的末端。将第一个数字解析为 int,减去街道号码的模数除以 100,然后在开头加 1,结尾加 99。

String[] splitAddr  = address.getAddressLine(0).toString().split("\\s");        
    houseNum    = splitAddr[0];
    street      = address.getAddressLine(0).toString().substring(houseNum.length());        
    blockNum    = Integer.parseInt(houseNum);
    blockNum    = (blockNum - (blockNum % 100));
    blockstart  = blockNum + 1;
    blockEnd    = blockNum + 99
于 2013-05-15T03:43:40.160 回答