RedCorners.Forms.GoogleMaps
8.46.22
See the version list below for details.
Requires NuGet 2.8.3 or higher.
dotnet add package RedCorners.Forms.GoogleMaps --version 8.46.22
NuGet\Install-Package RedCorners.Forms.GoogleMaps -Version 8.46.22
<PackageReference Include="RedCorners.Forms.GoogleMaps" Version="8.46.22" />
paket add RedCorners.Forms.GoogleMaps --version 8.46.22
#r "nuget: RedCorners.Forms.GoogleMaps, 8.46.22"
// Install RedCorners.Forms.GoogleMaps as a Cake Addin #addin nuget:?package=RedCorners.Forms.GoogleMaps&version=8.46.22 // Install RedCorners.Forms.GoogleMaps as a Cake Tool #tool nuget:?package=RedCorners.Forms.GoogleMaps&version=8.46.22
Enhanced Google Maps for Xamarin Forms. Xamarin.Forms.GoogleMaps fork.
Nuget: https://www.nuget.org/packages/RedCorners.Forms.GoogleMaps Documentation: http://redcorners.com/googlemaps/
Getting Started
RedCorners.Forms.GoogleMaps
provides facilities to render and manage Google Maps based views on your iOS and Android Xamarin.Forms projects. In order to use RedCorners.Forms.GoogleMaps
, you need to have the latest versions of the following packages installed:
In case you wish to access the device's location, you must ask for the required permissions prior to enabling My Location on the Google Maps view. Otherwise, the app will throw an exception due to the lack of required location permissions, or will not show My Location. These steps are platform-dependent and described below.
iOS Setup
In your AppDelegate
class, or before rendering the map, you have to call the Init
method and inject your Google Maps API key:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
RedCorners.Forms.GoogleMapsSystem.Init("AIzaSyD8-xxxxxxxxxxxxxxxxxxxxxxxx");
// ...
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
Based on your use case, you need to configure the info.plist
file as follows:
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location to continue.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location to continue.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location to continue.</string>
Android Setup
You have to initialize RedCorners.Forms.GoogleMaps
before using it. Typically you can do this in your MainActivity.cs
:
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Forms.Forms.Init(this, savedInstanceState);
// Initialize RedCorners.Forms.GoogleMaps
RedCorners.Forms.GoogleMapsSystem.Init(this, savedInstanceState);
LoadApplication(new App());
// Optional: Ask for Location Permissions
if (
(ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessFineLocation) != Permission.Granted) ||
(ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessCoarseLocation) != Permission.Granted))
{
ActivityCompat.RequestPermissions(this, new [] {
Manifest.Permission.AccessFineLocation,
Manifest.Permission.AccessCoarseLocation}, 1);
};
}
Depending on your use case, you may want to request Fine or Coarse locations. To do this, first add the following lines in your AndroidManifest.xml
file:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
You should also add your API key to the manifest:
<meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyD8-xxxxxxxxxxxxxxxxxxxxxxxx" />
In case you get the java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
error, the following line can help:
<uses-library android:name="org.apache.http.legacy" android:required="false" />
The entire manifest can look like this:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="com.redcorners.googlemaps">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="RedCorners.Forms.GoogleMaps.Demo.Android">
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyD8-xxxxxxxxxxxxxxxxxxxxxxxx" />
</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
Showing a basic map
The first step is including the RedCorners.Forms.GoogleMaps
namespace in your XAML file:
xmlns:map="clr-namespace:RedCorners.Forms.GoogleMaps;assembly=RedCorners.Forms.GoogleMaps"
Afterwards, you can use map:Map
or other variants of it such as map:LocationPickerView
or map:MapDrawView
to show a Google Map:
<map:Map
MyLocationEnabled="True"
IsMyLocationButtonVisible="True"
Latitude="{Binding Latitude, Mode=TwoWay}"
Longitude="{Binding Longitude, Mode=TwoWay}">
</map:Map>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. monoandroid80 is compatible. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. xamarinios10 is compatible. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
All Frameworks
- RedCorners (>= 8.0.0)
- RedCorners.Forms (>= 8.46.0)
- Xamarin.Forms (>= 4.8.0.1269)
-
MonoAndroid 8.0
- Xamarin.GooglePlayServices.Maps (>= 71.1610.4)
-
Xamarin.iOS 1.0
- Xamarin.Google.iOS.Maps (>= 3.7.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
90.0.0 | 325 | 7/14/2024 |
8.59.40 | 1,752 | 7/21/2021 |
8.59.39 | 1,429 | 2/10/2021 |
8.59.38 | 923 | 1/23/2021 |
8.59.37 | 873 | 1/23/2021 |
8.59.36-alpha | 772 | 1/9/2021 |
8.50.37 | 925 | 12/14/2020 |
8.50.36 | 880 | 12/9/2020 |
8.50.35 | 887 | 12/9/2020 |
8.50.34 | 862 | 11/28/2020 |
8.50.33 | 869 | 11/28/2020 |
8.50.32 | 1,006 | 10/26/2020 |
8.50.30 | 989 | 10/25/2020 |
8.50.29 | 994 | 10/25/2020 |
8.50.28 | 969 | 10/25/2020 |
8.50.27 | 881 | 10/25/2020 |
8.50.26 | 885 | 10/25/2020 |
8.50.25 | 926 | 10/25/2020 |
8.50.24 | 955 | 10/25/2020 |
8.50.23 | 1,036 | 10/24/2020 |
8.46.22 | 966 | 8/30/2020 |
8.46.21 | 1,078 | 7/23/2020 |
8.46.20 | 985 | 3/17/2020 |
6.41.19 | 1,204 | 1/12/2020 |
6.41.18 | 991 | 1/12/2020 |
6.41.17 | 1,066 | 1/11/2020 |
6.41.16 | 970 | 12/30/2019 |
6.41.15 | 938 | 12/30/2019 |
6.41.14 | 1,009 | 12/30/2019 |
6.41.13 | 972 | 12/18/2019 |
6.41.12 | 986 | 12/18/2019 |
5.39.11 | 949 | 12/2/2019 |
5.36.10 | 977 | 11/27/2019 |
5.36.9 | 1,022 | 11/24/2019 |
5.33.7 | 971 | 11/15/2019 |
5.33.6 | 995 | 11/1/2019 |
5.30.5 | 1,044 | 9/11/2019 |
5.26.4 | 1,063 | 8/11/2019 |
5.26.3 | 1,029 | 8/11/2019 |
5.24.2 | 1,000 | 8/5/2019 |
5.24.1 | 1,009 | 8/5/2019 |
5.17.1 | 1,033 | 7/14/2019 |
5.12.0 | 1,033 | 7/7/2019 |
4.11.0 | 1,032 | 6/20/2019 |
4.10.0 | 1,013 | 6/18/2019 |
4.9.0 | 1,042 | 6/15/2019 |
4.1.0 | 1,080 | 5/13/2019 |
4.0.5 | 1,024 | 5/12/2019 |
4.0.1-alpha | 862 | 5/9/2019 |