【发布时间】:2021-01-30 08:10:23
【问题描述】:
如何将 Json 或 JObject 结果传递给 javascript 函数
代码:
我使用 Postgres 数据库 创建表:
CREATE TABLE "TLandPoint"
(
gid integer NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
geom geometry,
"LandId" bigint NOT NULL,
"SumSpace" bigint NOT NULL,
"CityLevelId" bigint NOT NULL,
CONSTRAINT "PK_TLandPoint" PRIMARY KEY (gid)
USING INDEX TABLESPACE "MyDB"
)
TABLESPACE "MyDB";
ALTER TABLE "TLandPoint"
OWNER to postgres;
插入样本数据
INSERT INTO "TLandPoint"(
geom, "LandId", "SumSpace", "CityLevelId")
VALUES ( '0101000000F30D15E765D355410C3A0D001F1B5041', 5698, 13500, 123001002);
并创建将geom转换为json的视图
CREATE OR REPLACE VIEW "TLandPointView"
AS
SELECT "TLandPoint".gid,
st_asgeojson("TLandPoint".geom) AS jsonpoint,
"TLandPoint"."LandId",
"TLandPoint"."SumSpace",
"TLandPoint"."CityLevelId"
FROM "TLandPoint";
ALTER TABLE "TLandPointView"
OWNER TO postgres;
使用 Linq 从视图中加载数据
var TLandPts =DbContext.TLandPointView.AsQueryable();
并使用此代码创建 JObject
JObject rss =
new JObject(
new JProperty("type", "FeatureCollection"),
new JProperty("features",
new JArray(from p in TLandPts select
new JObject(
new JProperty("id", p.gid),
new JProperty("type", "Feature"),
new JProperty("geometry", new JObject(JObject.Parse(p.jsonpoint))),
new JProperty("properties",
new JObject(
new JProperty("LandId", p.LandId),
new JProperty("SumSpace", p.SumSpace),
new JProperty("CityLevelId", p.CityLevelId)
)
)
)
)
)
);
var y = rss.ToString();
并使用此代码将 y 传递给我的函数
在控制器中
public IActionResult Index(){
ViewBag.Land = y;
return view()
}
在 index.cshtml 中
<script>
LoadData('@ViewBag.Land');
</script
进入javascript
function loadData(mydata){
var PointSource = new ol.source.Vector({
features: new ol.format.GeoJSON().readFeatures(mydata)
});
var PointLayer = new ol.layer.Vector({
source: PointSource
});
map.addLayer(PointLayer);
}
javascript 中的代码更改为喜欢这张图片
【问题讨论】:
-
我使用c#和.net core5
标签: javascript c# json geometry