0

ここでの私の目的は、ユーザーが道順を尋ねているときに、ユーザーが Google マップのルート検索の結果で与えられた通りの 1 つに (まったく同じ座標でなくても) 既に行っているかどうかを識別することです。

これは次のように発生します。
ユーザーが通りをブラウジングしているとき、アプリは時々、ジオコード API を使用して、ユーザーがどこにいるかを Google に尋ねます。そして、それを登録します (どの情報を使用すればよいかを知る必要があります)。

将来の別の機会に、ユーザーが行きたい特定の場所への道順を尋ねると、アプリは Google マップの代替手段を尋ねます。次に、ユーザーがどの経路を使用するかを考慮して、どの経路を使用するかを決定します。構成に従って、彼が進行するか、またはその逆で、可能な限り認識します。

問題は、各通りの一意の識別子として何を使用すればよいか見当がつかないことです。

注: 今のところ、大通りをセクターに分割していません。その方が簡単なはずです。通り全体を考慮するよりも簡単な場合は、通りをセクターに分割します。

ユーザーがいる場所の座標を使用できないことは既にテストしました。近くの道路と重ならないように、精度を高めるために、切り捨てられたとしても座標を使用できません。
また、ジオコードが返す場所の名前を使用すると、道順を尋ねるときに使用できないように見えることも確認しました。道順 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 に答える