public static string GetRoadFromGpsData(TrackPoint gpsData, string preRoad = null) { Telogis.GeoBase.LatLon loc = new Telogis.GeoBase.LatLon(gpsData.Latitude, gpsData.Longitude); var arg = new Telogis.GeoBase.ReverseGeoCodeArgs(loc); arg.Heading = gpsData.Heading; if (!string.IsNullOrEmpty(preRoad)) { arg.LastNames = new string[] { preRoad }; } arg.Mode = Telogis.GeoBase.ReverseGeoCodeMode.AllLinks; arg.Speed = gpsData.Speed; var streetFull = Telogis.GeoBase.GeoCoder.ReverseGeoCodeFull(arg); if (streetFull != null) { double distance = streetFull.Intersection.DistanceTo(loc, Telogis.GeoBase.DistanceUnit.METERS); if (distance > RoadWidth) { return(null); } if (preRoad != null) { if (streetFull.Address != null) { foreach (var i in streetFull.Address.Names) { if (i == preRoad) { return(i); } } } if (streetFull.CrossStreet != null) { foreach (var i in streetFull.CrossStreet.Name) { if (i == preRoad) { return(i); } } } } if (string.IsNullOrEmpty(streetFull.Address.PrimaryName)) { return(preRoad); } return(streetFull.Address.PrimaryName); } return(null); }
public static string GetRoadFromGpsData(TrackPoint gpsData, string preRoad = null) { Telogis.GeoBase.LatLon loc = new Telogis.GeoBase.LatLon(gpsData.Latitude, gpsData.Longitude); var arg = new Telogis.GeoBase.ReverseGeoCodeArgs(loc); arg.Heading = gpsData.Heading; if (!string.IsNullOrEmpty(preRoad)) { arg.LastNames = new string[] { preRoad }; } arg.Mode = Telogis.GeoBase.ReverseGeoCodeMode.AllLinks; arg.Speed = gpsData.Speed; var streetFull = Telogis.GeoBase.GeoCoder.ReverseGeoCodeFull(arg); if (streetFull != null) { double distance = streetFull.Intersection.DistanceTo(loc, Telogis.GeoBase.DistanceUnit.METERS); if (distance > RoadWidth) return null; if (preRoad != null) { if (streetFull.Address != null) { foreach (var i in streetFull.Address.Names) { if (i == preRoad) { return i; } } } if (streetFull.CrossStreet != null) { foreach (var i in streetFull.CrossStreet.Name) { if (i == preRoad) { return i; } } } } if (string.IsNullOrEmpty(streetFull.Address.PrimaryName)) return preRoad; return streetFull.Address.PrimaryName; } return null; }