/// <summary> /// Метод,предназначенный для высчитывания координат,того или иного места,поддающегося на вход. /// </summary> /// <param name="type">Тип места</param> /// <param name="info">Информация о месте</param> /// <returns>Координаты в формате LatLng</returns> public static LatLng GetCoordinatesFromInfo(TypePlaces type, params int[] info) { if (type == TypePlaces.Основное_Кладбище) { switch (info[0]) { case 1: { // Если ряд 40 или меньше, то считаем координаты, если нет, то забираем константные координаты. if (info[1] <= 40) { return(CalculatedCoordinates(info[1], countOfRowsRegions[info[0] - 1], coordinatesRegions[info[0] - 1])); } else { return(coordinatesRegion1Row41_47[info[1]]); } } case 3: { // Если ряд 58 или меньше, то считаем координаты, если нет, то забираем константные координаты. if (info[1] <= 58) { return(CalculatedCoordinates(info[1], countOfRowsRegions[info[0] - 1], coordinatesRegions[info[0] - 1])); } else { return(coordinatesRegion3Row59_65[info[1]]); } } case 2: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: return(CalculatedCoordinates(info[1], countOfRowsRegions[info[0] - 1], coordinatesRegions[info[0] - 1])); default: return(null); } } // Если тип места это Старый Колумбарий, то считаем координаты с другими начальными\конечными точками. else if (type == TypePlaces.Старый_Колумбарий) { return(CalculatedCoordinates(info[0], countOfSectionOldColumbary, coordinatesOldColumbary)); } // Аналогично и для Нового Колумбария else { return(CalculatedCoordinates(info[0] - 115, countOfSectionNewColumbary, coordinatesNewColumbary)); } }
public Human(string info) { try { // Строка с ФИО, данными об участке,месте,ряду и точных координатах. string[] generalInformation = info.Split(";"); // Строка с ФИО, и данными о участке,месте,ряду. List <string> nameAndСoordinates = generalInformation[0].Split(" ").ToList(); // Фамилию делаем в нижнем регистре. StringBuilder str = new StringBuilder(nameAndСoordinates[0].ToLower()); // Делаем первую букву в верхнем регистре. str[0] = char.ToUpper(str[0]); nameAndСoordinates[0] = str.ToString(); // Записываем отдельно информацию о месте,ряду,участке. string coordinates = nameAndСoordinates[nameAndСoordinates.Count - 1]; // Удаляем ее из списка с ФИО. nameAndСoordinates.RemoveAt(nameAndСoordinates.Count - 1); // Записываем информацию о ФИО в поле fullName. fullName = string.Join(" ", nameAndСoordinates); //Парсим данные о рассположении. string[] coordinatesArray = coordinates.Split("-"); // Если в значении номера участка содержится спец. символ [, то место расположено в Колумбарии. if (coordinatesArray[0].Contains('[')) { plot = int.Parse(coordinatesArray[0].Trim('[', ']')); row = -1; place = $"{coordinatesArray[1]}-{coordinatesArray[2]}"; // Если участок меньше 116, то метсо расположено в Старом Колумбарии. if (plot < 116) { typePlace = TypePlaces.Старый_Колумбарий; } // Иначе в новом. else { typePlace = TypePlaces.Новый_Колумбарий; } } // Если не содержится спец символ, то место находится в одном из основных участков. else { typePlace = TypePlaces.Основное_Кладбище; plot = int.Parse(coordinatesArray[0]); row = int.Parse(coordinatesArray[1].Replace("а", "")); place = coordinatesArray[2]; } // Если в базе данных нет коориднат, то вызываем собственный метод, по подсчету координат. if (generalInformation[1] == string.Empty) { coordinatesForMap = GetCoordinates.GetCoordinatesFromInfo(typePlace, plot, row); } // Если есть,то парсим и записываем их в формате LatLng. else { double[] coordinatesForMap = generalInformation[1].Split(",").Select(x => double.Parse(x.Replace('.', ','))).ToArray(); this.coordinatesForMap = new LatLng(coordinatesForMap[0], coordinatesForMap[1]); } } catch (Exception ex) { throw ex; } }