Exemple #1
0
        internal string GetMapsUri(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var uri = string.Empty;

            if (options.NavigationMode == NavigationMode.None)
            {
                uri = $"geo:0,0?q={placemark.GetEscapedAddress()}";
                if (!string.IsNullOrWhiteSpace(options.Name))
                {
                    uri += $"({AndroidUri.Encode(options.Name)})";
                }
            }
            else
            {
                uri = $"google.navigation:q={placemark.GetEscapedAddress()}{GetMode(options.NavigationMode)}";
            }

            return(uri);
        }
Exemple #2
0
        public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var uri = string.Empty;
            var lat = latitude.ToString(CultureInfo.InvariantCulture);
            var lng = longitude.ToString(CultureInfo.InvariantCulture);

            if (options.NavigationMode == NavigationMode.None)
            {
                uri = $"geo:{lat},{lng}?q={lat},{lng}";

                if (!string.IsNullOrWhiteSpace(options.Name))
                {
                    uri += $"({AndroidUri.Encode(options.Name)})";
                }
            }
            else
            {
                uri = $"google.navigation:q={lat},{lng}{GetMode(options.NavigationMode)}";
            }

            StartIntent(uri);
            return(Task.CompletedTask);
        }
Exemple #3
0
        public Task OpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Permissions.EnsureDeclared <Permissions.LaunchApp>();

            var appControl = new AppControl
            {
                Operation = AppControlOperations.Pick,
                Uri       = "geo:",
            };

            appControl.Uri += $"0,0?q={placemark.GetEscapedAddress()}";

            AppControl.SendLaunchRequest(appControl);

            return(Task.CompletedTask);
        }
Exemple #4
0
        public Task OpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var uri = string.Empty;

            if (options.NavigationMode == NavigationMode.None)
            {
                uri = $"geo:0,0?q={placemark.GetEscapedAddress()}";
                if (!string.IsNullOrWhiteSpace(options.Name))
                {
                    uri += $"({AndroidUri.Encode(options.Name)})";
                }
            }
            else
            {
                uri = $"google.navigation:q={placemark.GetEscapedAddress()}{GetMode(options.NavigationMode)}";
            }

            StartIntent(uri);
            return(Task.CompletedTask);
        }
Exemple #5
0
        public Task OpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var uri = string.Empty;

            if (options.NavigationMode == NavigationMode.None)
            {
                uri = $"bingmaps:?where={placemark.GetEscapedAddress()}";
            }
            else
            {
                uri = $"bingmaps:?rtp=~adr.{placemark.GetEscapedAddress()}{GetMode(options.NavigationMode)}";
            }

            return(LaunchUri(new Uri(uri)));
        }
Exemple #6
0
        public static Task OpenAsync(this IMap map, Location location, MapLaunchOptions options)
        {
            if (location == null)
            {
                throw new ArgumentNullException(nameof(location));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            return(map.OpenAsync(location.Latitude, location.Longitude, options));
        }
        public async Task <bool> TryOpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

#if __IOS__
            var address = new MKPlacemarkAddress
            {
                CountryCode = placemark.CountryCode,
                Country     = placemark.CountryName,
                State       = placemark.AdminArea,
                Street      = placemark.Thoroughfare,
                City        = placemark.Locality,
                Zip         = placemark.PostalCode
            }.Dictionary;
#else
            var address = new NSMutableDictionary
            {
                [CNPostalAddressKey.City]           = new NSString(placemark.Locality ?? string.Empty),
                [CNPostalAddressKey.Country]        = new NSString(placemark.CountryName ?? string.Empty),
                [CNPostalAddressKey.State]          = new NSString(placemark.AdminArea ?? string.Empty),
                [CNPostalAddressKey.Street]         = new NSString(placemark.Thoroughfare ?? string.Empty),
                [CNPostalAddressKey.PostalCode]     = new NSString(placemark.PostalCode ?? string.Empty),
                [CNPostalAddressKey.IsoCountryCode] = new NSString(placemark.CountryCode ?? string.Empty)
            };
#endif

            var resolvedPlacemarks = await GetPlacemarksAsync(address);

            if (resolvedPlacemarks?.Length > 0)
            {
                return(await OpenPlacemark(new MKPlacemark(resolvedPlacemarks[0].Location.Coordinate, address), options));
            }
            else
            {
#if __IOS__ || __MACOS__
                // https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
                var uri   = $"http://maps.apple.com/?q={placemark.GetEscapedAddress()}";
                var nsurl = NSUrl.FromString(uri);

                return(await Launcher.Default.TryOpenAsync(nsurl));
#else
                return(await OpenPlacemark(new MKPlacemark(default, address), options));
        public Task <bool> TryOpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (string.IsNullOrWhiteSpace(options.Name))
            {
                options.Name = string.Empty;
            }

            NSDictionary dictionary = null;
            var          placemark  = new MKPlacemark(new CLLocationCoordinate2D(latitude, longitude), dictionary);

            return(OpenPlacemark(placemark, options));
        }
Exemple #9
0
        public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Permissions.EnsureDeclared <Permissions.LaunchApp>();

            var appControl = new AppControl
            {
                Operation = AppControlOperations.View,
                Uri       = "geo:",
            };

            appControl.Uri += $"{latitude.ToString(CultureInfo.InvariantCulture)},{longitude.ToString(CultureInfo.InvariantCulture)}";

            AppControl.SendLaunchRequest(appControl);

            return(Task.CompletedTask);
        }
Exemple #10
0
        public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var lat  = latitude.ToString(CultureInfo.InvariantCulture);
            var lng  = longitude.ToString(CultureInfo.InvariantCulture);
            var name = options.Name ?? string.Empty;
            var uri  = string.Empty;

            if (options.NavigationMode == NavigationMode.None)
            {
                uri = $"bingmaps:?collection=point.{lat}_{lng}_{name}";
            }
            else
            {
                uri = $"bingmaps:?rtp=~pos.{lat}_{lng}_{name}{GetMode(options.NavigationMode)}";
            }

            return(LaunchUri(new Uri(uri)));
        }
Exemple #11
0
        internal static AppControl GetAppControlData(Placemark placemark, MapLaunchOptions options)
        {
            if (placemark == null)
            {
                throw new ArgumentNullException(nameof(placemark));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Permissions.EnsureDeclared <Permissions.LaunchApp>();

            var appControl = new AppControl
            {
                Operation = AppControlOperations.Pick,
                Uri       = "geo:",
            };

            appControl.Uri += $"0,0?q={placemark.GetEscapedAddress()}";
            return(appControl);
        }
Exemple #12
0
 public Task OpenAsync(Placemark placemark, MapLaunchOptions options)
 => throw ExceptionUtils.NotSupportedOrImplementedException;
Exemple #13
0
 public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
 {
     return(TryOpenAsync(latitude, longitude, options));
 }
Exemple #14
0
        internal static AppControl GetAppControlData(double latitude, double longitude, MapLaunchOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Permissions.EnsureDeclared <Permissions.LaunchApp>();

            var appControl = new AppControl
            {
                Operation = AppControlOperations.View,
                Uri       = "geo:",
            };

            appControl.Uri += $"{latitude.ToString(CultureInfo.InvariantCulture)},{longitude.ToString(CultureInfo.InvariantCulture)}";

            return(appControl);
        }
Exemple #15
0
        public Task <bool> TryOpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            var appControl = GetAppControlData(placemark, options);

            return(TryLaunch(appControl));
        }
Exemple #16
0
        public Task <bool> TryOpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            var appControl = GetAppControlData(latitude, longitude, options);

            return(TryLaunch(appControl));
        }
Exemple #17
0
 public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
 => throw ExceptionUtils.NotSupportedOrImplementedException;
Exemple #18
0
        public async Task <bool> TryOpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            var uri = GetMapsUri(latitude, longitude, options);

            return(await TryLaunchUri(uri));
        }
Exemple #19
0
 public async Task OpenAsync(Placemark placemark, MapLaunchOptions options)
 {
     await TryOpenAsync(placemark, options);
 }
Exemple #20
0
        public Task OpenAsync(double latitude, double longitude, MapLaunchOptions options)
        {
            var uri = GetMapsUri(latitude, longitude, options);

            return(LaunchUri(uri));
        }
Exemple #21
0
        public Task OpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            var uri = GetMapsUri(placemark, options);

            return(LaunchUri(uri));
        }
Exemple #22
0
 public static Task OpenAsync(Placemark placemark, MapLaunchOptions options) =>
 Current.OpenAsync(placemark, options);
Exemple #23
0
 public static Task OpenAsync(double latitude, double longitude, MapLaunchOptions options) =>
 Current.OpenAsync(latitude, longitude, options);
Exemple #24
0
 public static Task OpenAsync(Location location, MapLaunchOptions options) =>
 Current.OpenAsync(location, options);
Exemple #25
0
 public static Task <bool> TryOpenAsync(Location location, MapLaunchOptions options) =>
 Current.TryOpenAsync(location, options);
Exemple #26
0
        public async Task <bool> TryOpenAsync(Placemark placemark, MapLaunchOptions options)
        {
            var uri = GetMapsUri(placemark, options);

            return(await TryLaunchUri(uri));
        }