javascript - Javascript 对象数组
问题描述
我正在关注本教程并弄清楚如何将地图居中放置在我想要的位置以及如何在我想要的位置放置标记。
但是我需要添加多个标记。在文章中它说“如果要添加多个标记,可以将多个特征对象数组添加到源对象的特征键,这样您就可以在地图上显示多个标记。 ”,但我没有知道该怎么做。任何人都可以帮忙吗?
编辑1:
我正在使用后面的 ASP.Net C# 代码从数据库中检索坐标并生成 javascript,如下所示:
strMapScript += "<script type=\"text/javascript\">" + Environment.NewLine;
strMapScript += "var baseMapLayer = new ol.layer.Tile({" + Environment.NewLine;
strMapScript += "source: new ol.source.OSM()" + Environment.NewLine;
strMapScript += "});" + Environment.NewLine;
strMapScript += "var map = new ol.Map({" + Environment.NewLine;
strMapScript += "target: 'map'," + Environment.NewLine;
strMapScript += "layers: [ baseMapLayer]," + Environment.NewLine;
strMapScript += "view: new ol.View({" + Environment.NewLine;
strMapScript += "center: ol.proj.fromLonLat([??.264861,??.0527032]), " + Environment.NewLine;
strMapScript += "zoom: 16" + Environment.NewLine;
strMapScript += "})" + Environment.NewLine;
strMapScript += "});" + Environment.NewLine;
//Adding a marker on the mapvar
foreach (DataRow drCoordinate in dtblCoordinates.Rows)
{
strMapScript += "marker = new ol.Feature({geometry: new ol.geom.Point(ol.proj.fromLonLat(" + Convert.ToString(drCoordinate["Coords"]) + ")),});" + Environment.NewLine;
strMapScript += "var vectorSource = new ol.source.Vector({features: [marker]});" + Environment.NewLine;
strMapScript += "var markerVectorLayer = new ol.layer.Vector({source: vectorSource,});" + Environment.NewLine;
strMapScript += "map.addLayer(markerVectorLayer);" + Environment.NewLine;
}
strMapScript += "</script>";
编辑2:
根据您的评论和回答,我将代码的最后一部分修改为如下所示,并且可以正常工作:
//Adding a marker on the mapvar
foreach (DataRow drCoordinate in dtblCoordinates.Rows)
{
strMapScript += "marker" + Convert.ToString(drCoordinate["Id"]) + " = new ol.Feature({geometry: new ol.geom.Point(ol.proj.fromLonLat(" + Convert.ToString(drCoordinate["Coords"]) + ")),});" + Environment.NewLine;
lstMarkers.Add("marker" + Convert.ToString(drCoordinate["Id"]) + "");
}
strMapScript += "var vectorSource = new ol.source.Vector({features: [" + String.Join(",",lstMarkers) + "]});" + Environment.NewLine;
strMapScript += "var markerVectorLayer = new ol.layer.Vector({source: vectorSource,});" + Environment.NewLine;
strMapScript += "map.addLayer(markerVectorLayer);" + Environment.NewLine;
解决方案
假设你有marker1
和marker2
标记:
var vectorSource = new ol.source.Vector({
features: [marker1, marker2]
});
推荐阅读
- ruby-on-rails - Rails:如何阻止 Amazon WorkMail 电子邮件从我的 Rails 应用程序进入垃圾邮件/垃圾邮件?
- curl - curl 请求消费者 MULTIPART_FORM_DATA 的资源
- android - 如何在父布局上丢失数据的情况下从子布局移动到父布局?以及如何优化我的代码?
- java - 使用 log4j2 的 Spring Boot。配置 log4j2 Spring-lookup
- sql - 根据某些列选择尚未连接且唯一的记录
- office-js - 是否可以通过 Office JS 插件中的清单文件为功能区图标添加间距?
- graphdb - 如何将 GraphDB 作为 Windows 服务运行
- c# - 开发环境中的 CORS 错误;在本地工作正常
- javascript - 如何将这行 Jquery 转换为纯 Javascript?
- python - 如何在 python 和 scipy 中拟合这些数据?