Проблема с OpenLayers и обработкой геометрии WKT - ASP.NET MVC Core 2.1 - PullRequest
0 голосов
/ 07 ноября 2018

Немного потеряно относительно того, что не так. У меня есть список в C #, который я пытаюсь перебрать в цикле foreach в моем файле cshtml. Мой код зацикливания:

debugger;
@foreach(CheckInWeb.Models.Geo.cGeoPoint item in ViewBag.Geometries)
{
    <text>
    var wkt = @item.Geometry;
    var feature = wktReader.readFeature(wkt);
    feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');       
    feature.setStyle(new ol.style.Style({
        image: new ol.style.Icon({
            anchor: [0.5, 46], anchorXUnits: 'fraction', anchorYUnits: 'pixels', opacity: 1.0, scale: 0.5, src: '@Url.Content("~/images/Icons/marker.png")'
        })
    }));
    featureCollection.push(feature);
    </text>
}

Строка, которая появляется в браузере, - var wkt = @item.Geometry; с ошибкой в ​​окне консоли браузера: Uncaught SyntaxError: missing ) after argument list

Визуализированный скрипт в браузере выглядит так:

debugger;

    var wkt = POINT (69.059 34.5411);
    var feature = wktReader.readFeature(wkt);
    feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');       
    feature.setStyle(new ol.style.Style({
        image: new ol.style.Icon({
            anchor: [0.5, 46], anchorXUnits: 'fraction', anchorYUnits: 'pixels', opacity: 1.0, scale: 0.5, src: '/images/Icons/marker.png'
        })
    }));
    featureCollection.push(feature);

Поскольку @item.Geometry является строкой, я попытался заключить этот ввод в переменную в одинарные и двойные кавычки без изменений.

Есть идеи?

1 Ответ

0 голосов
/ 08 ноября 2018

**** ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ *****

Как предположил Стивен, сначала преобразование в массив действительно облегчает:

var geometried = @Html.Raw(Json.Serialize(ViewBag.Geometries));
for (var i = 0; i < geometried.length; i++) {
    var feature = wktReader.readFeature(geometried[i].geometry);
    feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');
    feature.setStyle(new ol.style.Style({
        image: new ol.style.Icon({
            anchor: [0.5, 46], anchorXUnits: 'fraction', anchorYUnits: 'pixels', opacity: 0.75, scale: 0.25, src: '@Url.Content("~/images/Icons/marker.png")'
        })
    }));
    featureCollection.push(feature);
}
...