2016-09-26 2 views
8

Alle Lösungen zur Berechnung der Entfernung liegen zwischen zwei Punkten. meine Frage ist: Gibt es eine Möglichkeit, die Entfernung zu einer bestimmten Straße zu berechnen?ist es möglich, die Entfernung zwischen dem aktuellen Standort und einer Straße, einer Allee oder einem Gebiet zu erreichen?

Angenommen, ich möchte eine Entfernung von meinem Standort zu einem bestimmten Bereich oder Avenue, die viele Straßen haben, um dorthin zu gelangen, in diesem Fall, wie die nächste Straße zu mir wissen, um dorthin zu gelangen?

hier habe ich nur einen Punkt (meine Position) während der Zielpunkt ist Variante und hängt von meinem aktuellen Standort ab. Was ich über das Ziel weiß, ist in einer bestimmten Straße oder einem bestimmten Gebiet, also wie berechnet man es?

ein anderer Fall für diese Ausgabe, nehme an, ich bin 10 Meter von einer bestimmten Straße entfernt, die 1 km lang ist. Ich sollte in der Lage sein zu berechnen, dass meine Entfernung 10 Meter vom Anfang dieser Straße ist, nach dieser Entfernung, wenn ich die Straße betrete, und für jeden Meter, den ich für 1 km geweckt habe, sollte 0 Meter Abstand von meinem Standort zu dieser Straße sein, und wenn ich es von der anderen Seite verlasse, sollte die Entfernung wieder vom Endpunkt dieser Straße aus berechnet werden, nicht vom Anfangspunkt, also wenn ich ungefähr 5 Meter davon entfernt bin, sollte sie es als 5 Meter und nicht als 1005 Meter berechnen.


Hier ist die Forderung nach Beispiel auf Google Maps:

ersten Wall Street in NY city auf der Karte sehen lassen.

enter image description here

So das Ziel Ziel ist die Wall Street. Nun, wenn Sie Ihren aktuellen Standort in der Kreuzung der John Street mit Water Street, meine Aufgabe ist es, Sie zum nächsten Punkt in der Wall Street und der Weg wird als this one (Walk-Modus).

enter image description here

aber wenn Sie in der Kreuzung von Broad Street mit Beaver Street sind dann das Ziel zum nächsten Punkt an der Wall Street wird like this one (Fuß-Modus) sein:

enter image description here

dies meine Ausgabe


ist es möglich? Bieten neue APIs hierfür eine Lösung?

irgendwelche Lösungen oder Ideen?

+0

A "Abstand" benötigt zwei Punkte per Definition. Einige der [Geocodierungsdienste] (https://en.wikipedia.org/wiki/Geocoding) helfen Ihnen, (zumindest grobe) Koordinaten für eine Straße, eine Straße oder ein Gebiet zu erhalten. Eine "nächste Straße, um Sie dorthin zu bringen" ist komplizierter, weil Sie in der Praxis nach Navigationsanweisungen fragen. Um die genaue Entfernung zu einer Straße zu berechnen, müssen Sie ihre Koordinatenpunkte kennen und sie z. von Mapzen als Vektorkartendaten. Die eigentliche Berechnung ist dann ein Geometrieproblem: möglichst senkrechter Abstand zu einer Linie, ansonsten Entfernung zum nächsten Punkt. –

+0

@MarkusKauppinen danke für die Antwort, genau wie Sie sagen, wie man den nächstgelegenen Punkt zu einer bestimmten Straße von meinem Standort mit Google Maps? Ich habe zwei Informationen, 1. meine Standortkoordinaten. 2. der Name der Zielstraße. jetzt möchte ich dorthin als einen kürzesten Weg zum nächsten Punkt in dieser Straße kommen, wenn ich den nächsten Punkt festlege, dann kann ich dorthin gehen, indem ich die nächste Straße benutze, um dorthin zu kommen und andere Navigationsanweisungen zu bekommen. Aber wie kommt der nächste Punkt zu einer Straße als Zielpunkt? Das ist das Problem hier. –

+0

down voting ... kein Problem, aber geben Sie mir einen Grund. Ich suche nach einer Lösung für dieses Problem, wenn jemand abstimmen möchte und eine Lösung kennt, mach weiter, aber gib mir bitte eine Lösung. –

Antwort

0

hey ja du bekommst Längen- und Breitengrad von durchsuchten location hier werde ich beispiel wie du es bekommen kannst.

können Sie Google die automatische Vervollständigung verwenden für jede place.Then es placeid von der automatischen Vervollständigung api dann passieren Details api erhalten suchen.

https://maps.googleapis.com/maps/api/place/autocomplete/json

https://maps.googleapis.com/maps/api/place/details/json

Siehe die Parameter

//Google Autocomplete 
@GET(ApiConstants.GET_AUTOCOMPLETE) 
Observable<GoogleAutocompleteSearchResponse> getAutoCompleteSearch(@Query("input") String input, @Query("key") String key, @Query("components") String components); 

// Google Autocomplete places 
@GET(ApiConstants.GET_AUTOCOMPLETE_PLACE) 
Observable<GoogleAutoCompletePlacesResponse> getAutoCompletePlaces(@Query("placeid") String input, @Query("key") String key); 

Sie können Breitengrad Längengrad erhalten in zweite api passieren.

Hoffe, das wird Ihnen helfen.

0

Zuerst sollten Sie die Länge, Breite des Zielortes

public Location getCoordinatesFromAddress(Context context,String strAddress) { 

    Geocoder coder = new Geocoder(context); 
    List<Address> address; 
    Location destinationLoc = null; 

    try { 
     address = coder.getFromLocationName(strAddress, 5); 
     if (address == null) { 
      return null; 
     } 
     Address location = address.get(0); 
     destinationLoc = new Location("Destination"); 

     destinationLoc.setLatitude(location.getLatitude()); 
     destinationLoc.setLongitude(location.getLongitude()); 

    } catch (Exception ex) { 

     ex.printStackTrace(); 
    } 

    return destinationLoc; 
    } 

Wie Sie erwähnten Sie Breite und Länge von Ihrem aktuellen Standort haben. Verwenden Sie das, um Ihren aktuellen Standort zu erstellen.

Location locationA = new Location("Present location "); 

locationA.setLatitude(latA); 
locationA.setLongitude(lngA); 

Weiter nach Längen- und Breitengrade von Ihrem Ziel und Quelle (vorhanden) Stellen bekommen können Sie leicht den Abstand zwischen ihnen berechnen zB

float distance = locationA.distanceTo(locationB); 

Es wird Sie geben den Abstand b/w zwei geo Standorte in Metern.

0

Werfen Sie einen Blick auf this response. Werfen Sie auch einen Blick über this API von Google.

ich denke, was Sie wollen, sieht wie folgt aus:
- gezielte Straßenkoordinaten erhalten [lat, long]
- get Orte in der Nähe von google,
- der nächste Ort suchen.

0

Wenn Sie in diesem Fall die Adresse des Ziels und des Ursprungs ermitteln können, können Sie mit der folgenden Methode die Entfernung zwischen den Adressen ermitteln.

für die Sie entweder Adresse zu übergeben (Ursprung/Ziel) oder Breite/Länge (Ursprungs-/Bestimmungs)

1) Hier ist der Ursprung Parameter wie folgt sein kann, wenn Adresse bereitgestellt

origins=Bobcaygeon+ON|24+Sussex+Drive+Ottawa+ON 

2) Wo, wenn Breite/Länge angegeben ist, dann folgt das Format.

origins=41.43206,-81.38992 

3) Wenn Sie in der Lage sind Platz ID zu bekommen, dann wird dies das Format

origins=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE 

Das folgende Beispiel verwendet Breiten-/Längenkoordinaten der Zielkoordinaten

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.6905615%2C-73.9976592%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626%7C40.659569%2C-73.933783%7C40.729029%2C-73.851524%7C40.6860072%2C-73.6334271%7C40.598566%2C-73.7527626&key=YOUR_API_KEY 
angeben

Gleiche Anfrage für codierte Polylinie ist

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=enc:_kjwFjtsbMt%60EgnKcqLcaOzkGari%40naPxhVg%7CJjjb%40cqLcaOzkGari%40naPxhV:&key=YOUR_API_KEY 

Wie schon in anderen erklärt ist die allgemeine Methode kürzeste Entfernung zu finden API

float distance = firstLocation.distanceTo(secondLocation); 

Weitere Informationen sind durch this link

0

Verwenden Sie einfach Haversine Formel Abstand zwischen zwei Punkten zu berechnen, wenn Sie die Breite kennen und Länge für jeden von ihnen.

Verwandte Themen