Yes, you can get current address (towns in your case) by using ReverseGeocodeQuery
class in Microsoft.Phone.Maps.Services API. First, try to get the current coordinate like this:
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracyInMeters = 100;
Geoposition geoposition = await geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5),
timeout: TimeSpan.FromSeconds(5));
Then, use the coordinate to query the address:
ReverseGeocodeQuery query = new ReverseGeocodeQuery();
query.GeoCoordinate = new GeoCoordinate(geoposition.Coordinate.Latitude, geoposition.Coordinate.Longitude);
query.QueryCompleted += (s, ev) =>
{
if (ev.Error == null && ev.Result.Count > 0)
{
List<MapLocation> locations = ev.Result as List<MapLocation>;
// do what you want with the locations...
}
}
query.QueryAsync();
More detailed example can be found here.