Articles in this section
Category / Section

How to Use Google Maps API to Show Google Maps in Xamarin.Forms Maps?

1 min read

Description

This article describes how to use Google Maps API to show Google Maps using ImageryLayer of the Xamarin Maps(SfMaps) control.

Solution:

You can show the Google Maps using the RequestTileUri event of ImageryLayer.

Step 1: Subscribe the RequestTileUri event of ImageryLayer as demonstrated in the following code example.

XAML:

 
<maps:SfMaps>
   <maps:SfMaps.Layers>
         <maps:ImageryLayer RequestTileUri="ImageryLayer_RequestTileUri">
          <maps:ImageryLayer.MarkerSettings>
                <maps:MapMarkerSetting MarkerIcon="Image" ImageSource="pin.png" IconSize="15"/>
           </maps:ImageryLayer.MarkerSettings>
                <maps:ImageryLayer.Markers>
                    <maps:MapMarker Latitude="38.8833" Longitude= "-77.0167"/>
                    <maps:MapMarker Latitude="-15.7833" Longitude= "-47.8667"/>
                    <maps:MapMarker  Latitude="21.0000" Longitude= "78.0000"/>
                    <maps:MapMarker Latitude="35.0000" Longitude= "103.0000" />
                    <maps:MapMarker Latitude="-4.0383" Longitude= "21.7586" />
             </maps:ImageryLayer.Markers>
           </maps:ImageryLayer>
    </maps:SfMaps.Layers>
</maps:SfMaps>
 

 

Step 2: In the RequestTileUri event, assign the Google Maps API Uri link (or any tile maps provider) to corresponding x, y, and zoom level of the Uri property of TileUriArgs as demonstrated in the following code example.

C#

/// <summary>
/// This event is used to pass the uri of desired maps tile provider.
/// </summary>
/// <param name="sender">The imagery layer</param>
/// <param name="e">The Tile uri arguments</param>
private void ImageryLayer_RequestTileUri(object sender, Syncfusion.SfMaps.XForms.TileUriArgs e)
        {
            var link = "http://mt1.google.com/vt/lyrs=y&x=" + e.X.ToString() + "&y=" + e.Y.ToString() + "&z=" + e.ZoomLevel.ToString();
            e.Uri = link;
           
        }

 

Google maps using xamarin SfMaps

 

You can download the demo sample from the following link


Conclusion

I hope you enjoyed learning about how to Google Maps API to show Google Maps using ImageryLayer of Xamarin.Forms Maps.

You can refer to our Xamarin.Forms Maps page to know about its other groundbreaking feature representations. You can also explore our Xamarin.Forms Maps Documentation to understand how to manipulate data.

For current customers you can check out on our Xamarin.Forms components from the License and Download page. If you are new to Syncfusion, you can try our 30-day free trial to check out our Xamarin.Forms Maps and other Xamarin.Forms components.

If you have any queries or require clarifications, please let us know in the comment section below. You can also contact us through our support forumsDirect-Trac, or feedback portal. We are always happy to assist you!

 
Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (4)
Please  to leave a comment
SC
Shane Coufreur

Everything added to the imagelayer on line 7 of MainPage will be removed by line 16 in CustomMapRenderer.

This solution completely removes the ability to add any custom markers on the map.

SS
Sheik Syed Abthaheer M

Before clearing the Layers collection from maps, you have to assign the old imagery layer properties to new extended  imager layer(ImageryLayerExt). For example, you have to assign old layer markers collection to the ImageryLayerExt’s markers collection to display the marker  as in below code. 


Please use the following code in the CustomMapRenderer.

 

void AddLayer()

{

ImageryLayerExt layer = new ImageryLayerExt();

NativeMap.SfMaps nativeMap = (Control as NativeMap.SfMaps);

var nativeLayer = nativeMap.Layers[0] as NativeMap.ImageryLayer;

if(nativeLayer != null)

  layer.Markers = nativeLayer.Markers;

nativeMap.Layers.Clear();

nativeMap.Layers.Add(layer as NativeMap.ImageryLayer);

}

 

SS
Sheik Syed Abthaheer M

From version 17.1.0.38, we have provided direct API as RequestTileUri to achieve this supportwithout using custom renderer for each platform. We have modified the sample and code based on new API.

KA
Karl

How would you go about it if you had a openstreet maps tile map instead of google http://a.tile.opentopomap.org/{z}/{x}/{y}.png ? As I didn't not under stand this part In the RequestTileUri event, assign the Google Maps API Uri link (or any tile maps provider) to corresponding x, y, and zoom level of the Uri property of TileUriArgs as demonstrated in the following code example.

Access denied
Access denied