Как анализировать строки, поступающие из Observable? - PullRequest
2 голосов
/ 26 июня 2019

У меня есть проблема при попытке преобразовать текст в число для координат геолокации. Моя модель: сайт с идентификатором и т. Д. И массивом точек в качестве свойства. Я решил не создавать отношения между сайтом и точками.

Итак, в моем коде: баллов объявляется так:

points: Array<any> = [];

прямоугольников объявлен так (Массив массивов):

rectangles: Array<Array<LatLngLiteral>> = []; 

Я "зацикливаюсь" на сайтах для конкретного клиента и строю массив под названием rectangles , чтобы показать его на карте Google. Прямоугольник состоит из множества массивов, которые поступают из БД. Здесь у меня есть два сайта и прямоугольник Array:

rectangles : [[
[
   {"lat":44.841225,"lng":-0.580036},
   {"lat":44.842236,"lng":-0.64696},
   {"lat":44.805615,"lng":-0.63084}
],
[
   {"lat":44.819868,"lng":-0.582811},
   {"lat":44.853709,"lng":-0.483573},
   {"lat":44.80696,"lng":-0.53299},
   {"lat":44.80696,"lng":-0.629078}
]]] 

Код для его получения:

this.customerApi.getSites(this.currentUser.id)
  .subscribe(response => {
    this.sites = response;
    this.rectangles.push(this.sites.map(s => s.points));
  });
}

Сайты это как:

sites : 
[
    {
    "siteName":"Site de Marseille",
    "siteAdress1":"rue de blabla",
    "siteAddress2":"string",
    "siteCodPost":"13010",
    "siteTown":"Marseille",
    "points":
       [
         {"lat":44.841225,"lng":-0.580036},
         {"lat":44.842236,"lng":-0.64696},
         {"lat":44.805615,"lng":-0.63084}
        ],
    "id":"5d0ce7c4a06b07213a87a753", 
    "companyId":"5cd430745304a21b9464a219",
    "customerId":"5cd430c65304a21b9464a21a"`
    }
    ,
    {
"siteName":"Site de Bordeaux",
"siteAdress1":"rue de la  Garonne",
"siteAddress2":"string",
"siteCodPost":"31000",
"siteTown":"Bordeau    x",
"points":
    [
        {"lat":44.819868,"lng":-0.582811},
        {"lat":44.853709,"lng":-0.483573},
        {"lat":44.80696,"lng":-0.53299},
        {"lat":44.80696,"lng":-0.629078}
    ],
"id":"5d0cf65fa06b07213a87a754",
"companyId":"5cd430745304a21b9464a219",
"customerId":"5cd430c65304a21b9464a21a"}]

enter image description here

Формат моего массива прямоугольников подходит для другого массива, подобного этому, значение, написанное в коде, показывает прямоугольник на Google Map. За исключением, может быть, количества квадратных скобок ...

Я думаю, что это происходит из формата данных.

Итак, я попытался: points: Array<LatLngLiteral> = []; и это не работает.

Я понятия не имею, где можно использовать метод parseFloat (), чтобы попытаться (при необходимости).

У кого-нибудь есть драгоценная идея, чтобы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 26 июня 2019

Bonjour,

В машинописном шрифте нет типа float, поэтому вы можете создать функцию, которая проверяет содержимое любой строки и затем преобразовывает ее, если это число с плавающей запятой, как показано ниже:

getFloatValue(val) {
    if (val.indexOf('.') > -1) {
        try {
            eval(val);
            return parseFloat(val);
        }
        catch(error) {
            console.log('error');
        }
    }
    return val;
}

Вы можете использовать это с каждым свойством вашего объекта следующим образом:

let lat = getFloatValue(rectangle[0].lat);
...