private async Task<bool> serchBuildStart(string bid, string pid)
{
bool foundb = false;
bool foundpoi = false;
foreach (var obj in _worldbuildings.buildings)
{
if (obj.buid.Equals(bid))
{
foundb = true;
var floor_num = "";
var lat = double.Parse(obj.coordinates_lat, CultureInfo.InvariantCulture);
var lon = double.Parse(obj.coordinates_lon, CultureInfo.InvariantCulture);
var settings1 = IsolatedStorageFile.GetUserStoreForApplication();
if (settings1.DirectoryExists(bid) && checkCompleted(bid))
{
// load staff to the map
clear();
ReadAllBuildingFloorsFromIsolatedStorage(bid);
ReadPoisByBuildingFromIsolatedStorage(bid);
addBuildingsToMap(bid);
buildLoaded = true;
loadBuidingToMap(bid);
createAppBarMenuItem();
}
else
{
isDownloading = true;
//ApplicationBar.IsVisible = false;
//downloading.Visibility = Visibility.Visible;
loading.Visibility = Visibility.Visible;
loading.IsIndeterminate = true;
clear();
// download staff and show them to the map
var fsdf = await DownloadPoisBuildStaff(bid);
ReadAllBuildingFloorsFromIsolatedStorage(bid);
ReadPoisByBuildingFromIsolatedStorage(bid);
addBuildingsToMap(bid);
buildLoaded = true;
loadBuidingToMap(bid);
loading.Visibility = Visibility.Collapsed;
loading.IsIndeterminate = false;
createAppBarMenuItem();
isDownloading = false;
}
if (_poisByBuilding != null)
{
foreach (var obj2 in _poisByBuilding.pois)
{
if (obj2.buid.Equals(bid))
{
if (pid.Equals("none"))
{
if (obj2.is_building_entrance != null)
if (obj2.is_building_entrance.Equals("true"))
{
entrance_location = new GeoCoordinate(lat, lon);
floor_num = obj2.floor_number;
pid = obj2.puid;
to_entrance = true;
}
}
else
if (obj2.puid.Equals(pid))
{
floor_num = obj2.floor_number;
to_entrance = false;
}
foundpoi = true;
}
}
}
if (!foundpoi)
return false;
_floorPoiTo = pid;
_floorPoiToNumber = floor_num;
_floorPoiToLocation = new GeoCoordinate(lat, lon);
if (_tilesCheck)
{
_buildingSearch = obj.buid;
_wmstileprovider.setBuidAndFloor(obj.buid, floor_num);
if (!Mymap.TileSources.Contains(_wmstileprovider))
Mymap.TileSources.Add(_wmstileprovider);
_selectedBuild = obj.buid;
_selectedFloor = floor_num;
Dispatcher.BeginInvoke(() =>
{
txt_cur.Text = _selectedFloor;
});
ViewPoisByBuilding();
}
else
{
Mymap.TileSources.Clear();
_selectedBuild = obj.buid;
_selectedFloor = floor_num;
Dispatcher.BeginInvoke(() =>
{
txt_cur.Text = _selectedFloor;
});
ViewPoisByBuilding();
}
ApplicationBar.IsVisible = true;
//Mymap.SetView(new GeoCoordinate(lat, lon), 20);
SystemTray.IsVisible = false;
_foundBuilding = true;
break;
}
}
return true;
}