2012-03-27 2 views
0

Ich wundere mich über die Machbarkeit von diesem unten. Natürlich frage ich nicht nach dem vollständigen Code (obwohl es nett wäre!), Sondern eher eine Möglichkeit, folgende in ASP.NET zu erreichen:Wie berechnet man den Abstand zwischen zwei Standorten mit ASP.NET?

Ich habe eine Website. Personen registrieren sich dort und geben ihr Wohnland sowie die Postleitzahl und den Städtenamen an, die dann in einer SQL Server DB gespeichert werden. Ich habe eine Suchmaschine auf meiner Website und ich möchte eine der Filteroptionen sein "zeige mir nur Mitglieder, die in einer maximalen Entfernung von 100 Kilometern leben".

Irgendwelche Ideen, Hinweise, bereits geschriebenen Code, den ich wiederverwenden kann, freie APIs tun genau das, etc ...?

Vielen Dank für Ihre Zeit!

+0

-1 Frage zeigt sehr wenig Aufwand. Nur eine schnelle Suche nach SO ergab mindestens ein Dutzend sehr nahe Duplikate. Edit: Vielleicht bin ich nur ein launischer alter Mann drinnen, aber meiner Meinung nach sollten die Leute diese nicht lesen müssen (schließlich sagtest du dir "eigentlich meine erste Google-Suche ...") – Corbin

+0

Danke für die - 1. Ich suchte SO und ich konnte viele Beiträge finden, die sich auf die Berechnung zwischen zwei Standorten beziehen, aber keinen sehen, der mich in die Richtung zeigen würde, wie man den Abstand zwischen einem Standort und über 20k effizient ohne Test überprüfen kann der gesamte verfügbare Standort Wenn Sie die folgende Diskussion mit Herrn Straton überprüfen, würden Sie verstehen. Aber ja, wie gesagt, danke. – ilovebigmacs

+0

Basierend auf Ihrem Titel und der Möglichkeit, eine API zu verwenden, ging ich davon aus, dass Sie sich auf die eigentliche Berechnung konzentrierten und nicht auf effiziente Weise auf einer großen Menge. In diesem Fall wird ein Großteil meines ursprünglichen Kommentars annulliert, und vielleicht verdient Ihr Beitrag keine -1. Mit anderen Worten, Sie finden http://stackoverflow.com/questions/3983325/calculate-distance-between-zip-codes-and-users hilfreich. – Corbin

Antwort

3

Zuerst müssen Sie den Geocode (Längen- und Breitengrad) von der Postleitzahl nachschlagen. Hierfür gibt es mehrere Web-Services sowie CSV-Dateien, die Sie herunterladen können. Google bietet beispielsweise Geolocaiton-Dienste an. Ich glaube, dass ihre API auch die Entfernung zwischen zwei Punkten angibt.

Sobald Sie den Geocode kennen, ist es auf jeden Fall eine einfache Sache, den Abstand mithilfe von Mathematik zu bestimmen. Beispielcode here:

(eigentlich meine erste Google-Suche kam mit einem complete solution.)

+0

Vielen Dank für die schnelle Antwort. Dies funktioniert mit den USA, wenn Sie Zugriff auf eine Datei mit einer vollständigen Liste von Postleitzahlen und ihren Geolokalisierungsinformationen haben. Wie würde ich das für ein weltweites Publikum angehen? – ilovebigmacs

+0

Google hat Geocodes für das weltweite Publikum und eine Google-Suche sollte mehr Dienste bereitstellen, wenn Sie Google nicht verwenden möchten. – David

+0

Yup, ich habe gerade das gefunden. Auf der anderen Seite fand ich viele Beispiele, um den Abstand zwischen zwei Postleitzahlen zu berechnen und ich denke, ich verstehe die Formel (zumindest die Art, sie zu benutzen). Nun, wie würde ich alle Orte in der Nähe eines bestimmten suchen? Würde eine "for ... next" -Schleife, die die Entfernung zu jedem zip überprüft, an etwa 50k registrierten Mitgliedern in ungefähr 20k Standorten arbeiten? – ilovebigmacs