Hi everyone,
I'm changing the status of this item to "Completed" as setting the Map center at runtime is possible. Here is an example:
<TelerikDropDownList Data="@MarkerData" TextField="Title" ValueField="Id" @bind-Value="selectedValue" OnChange="@MyOnChangeHandler">
</TelerikDropDownList>
<TelerikMap Center="@MapCenter"
Zoom="3">
<MapLayers>
<MapLayer Type="@MapLayersType.Tile"
Attribution="@LayerAttribution"
Subdomains="@LayerSubdomains"
UrlTemplate="@LayerUrlTemplate">
</MapLayer>
<MapLayer Type="@MapLayersType.Marker"
Data="@MarkerData"
LocationField="@nameof(MarkerModel.LatLng)"
TitleField="@nameof(MarkerModel.Title)">
</MapLayer>
</MapLayers>
</TelerikMap>
@code {
private double[] MapCenter { get; set; } = new double[] { 30.268107, -97.744821 };
private int selectedValue { get; set; }
private readonly string[] LayerSubdomains = new string[] { "a", "b", "c" };
private const string LayerUrlTemplate = "https://#= subdomain #.tile.openstreetmap.org/#= zoom #/#= x #/#= y #.png";
private const string LayerAttribution = "© <a href='https://osm.org/copyright'>OpenStreetMap contributors</a>";
private void MyOnChangeHandler(object theUserInput)
{
int selectedId = (int)theUserInput;
MapCenter = MarkerData.First(i => i.Id == selectedId).LatLng;
}
private List<MarkerModel> MarkerData { get; set; } = new List<MarkerModel>() {
new MarkerModel()
{
Id = 0,
LatLng = new double[] { 30.268107, -97.744821 },
Title = "Austin, TX"
},
new MarkerModel()
{
Id = 1,
LatLng = new double[] { 37.7749, -122.4194 },
Title = "San Francisco, CA"
}
};
public class MarkerModel
{
public int Id { get; set; }
public double[]? LatLng { get; set; }
public string Title { get; set; } = string.Empty;
}
}
Regards,
Hristian Stefanov
Progress Telerik
Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.
You just need to bind it to a variable like:
<TelerikMap Center="@Center" />
@code
{
double Center = new double[] { 0.0, 0.0 };
void Change(double lat, double lon)
{
Center = new double[] { lat, lon }
}
}