あなたがピザの配達人であり、有効射程(30分以内に行ける場所)を計算したいとします。そして、その時間データのNからEセクションの色付きの棒グラフを次のように作成します(偽のデータを使用)。

そして、あなたは10万軒の家のようなものを含めたいと思います...少なくとも私は、このようなプログラムは、グーグルマップで紹介された限界の前に作られたと聞きました。この場合、制限は一生懸命に噛み付きます。
すべての家から地理的な場所がある場合は、鳥のように飛ぶときに、地球上のポイントがどれだけ離れているかから予測を見つけることができます。それに基づいてそれらを並べ替え、最良の予測のための結果を見つけます。
編集:予測を作成するときに役立つ可能性のあるJavaコード例を追加しました。
/**
* Thaddeus Vincenty's inverse method formulae implementation for
* geographical distance between two given points on earth.
* @param L1
* geographical latitude of standpoint in decimal degrees
* @param G1
* geographical longitude of standpoint in decimal degrees
* @param L2
* geographical latitude of destination in decimal degrees
* @param G2
* geographical longitude of destination in decimal degrees
* @return Geographical distance in kilometeres
*/
public static double getDistance(final double L1, final double G1,
final double L2, final double G2) {
double delta, p0, p1, p2, p3;
// The average radius for a spherical approximation of Earth
double rEarth = 6371.01d;
delta = G1 - G2;
p0 = Math.cos(L2) * Math.cos(delta);
p1 = Math.cos(L2) * Math.sin(delta);
p2 = Math.cos(L1) * Math.sin(L2) - Math.sin(L1) * p0;
p3 = Math.sin(L1) * Math.sin(L2) + Math.cos(L1) * p0;
return rEarth * Math.atan2(Math.sqrt(p1 * p1 + p2 * p2), p3);
}
/**
* Rounds double to nr number of decimal places
* @param d
* floating-point number
* @param nr
* decimal places to keep
* @return rounded number with nr decimal places
*/
public static double round(double d, int nr) {
return new java.math.BigDecimal(Double.toString(d)).setScale(nr,
java.math.BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String[] args) {
double L1 = Math.toRadians(Double.parseDouble(args[0]));
double G1 = Math.toRadians(Double.parseDouble(args[1]));
double L2 = Math.toRadians(Double.parseDouble(args[2]));
double G2 = Math.toRadians(Double.parseDouble(args[3]));
System.out.println(round(getDistance(L1, G1, L2, G2), 2));
}