Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }