我想通过代码隐藏在地图上添加多个传单标记。我的C#如下:
public void setMarker(double[] lat, double[] lng)
{
string script = string.Empty;
for (int i = 0; i < lat.Length; i++)
{
script = string.Format(@"<script language=""Javascript"">
addMarker('{0}','{1}')
</script>", lat[i], lng[i]);
Page.ClientScript.RegisterStartupScript(this.GetType(), "onMapClick", script);
}
}
其中lat和lng是长度相同且保持预定坐标点的数组,我想要标记出现。
我的addMarker()
在javascript中定义为:
function addMarker(lat, lng)
{
var myLatLng = new L.LatLng(lat, lng);
L.marker(myLatLng, { icon: greenIcon, draggable: true }).addTo(Mymap);
}
如果我从鼠标点击事件中调用相同的功能,那么我点击的每个地方都会添加标记。在使用我的功能时如何让所有标记留在地图上?
答案 0 :(得分:3)
客户端脚本由其密钥及其类型唯一标识。具有相同密钥和类型的脚本被视为重复。只能在页面中注册一个具有给定类型和密钥对的脚本。
在你的情况下,我只是将对函数的所有调用附加到一个脚本块,然后注册一次(在循环之外):
StringBuilder startupScript = new StringBuilder();
startupScript.Append(@"<script language=""Javascript"">");
for (int i = 0; i < lat.Length; i++)
{
startupScript.AppendFormat(@"addMarker('{0}','{1}'); ", lat[i], lng[i]);
}
startupScript.Append(@"</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "onMapClick", startupScript.ToString());