谷歌地图pin标题从json数组
Google map pin title from json array
我有一个地图,我从json数组填充。
我传递一个多维数组并转换为json:
public List<string[]> locationList { get; set; }
var locs = @Html.Raw(Json.Encode(Model.locationList));
使用邮政编码的地图代码:
var map;
var elevator;
var myOptions = {
zoom: 5,
center: new google.maps.LatLng(53.90, -3.00),
mapTypeId: 'roadmap'
};
map = new google.maps.Map($('#map_canvas_locations')[0], myOptions);
var latlng;
for (var i = 0; i < locs.length; i++) {
var name = locs[i][1];
var markerdata = $.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + locs[i][0] + '&sensor=false', null, function (data) {
var p = data.results[0].geometry.location
latlng = new google.maps.LatLng(p.lat, p.lng);
new google.maps.Marker({
position: latlng,
map: map,
title: name,
});
});
};
问题似乎与标题有关。如果我尝试使用json值直接没有引脚显示:
new google.maps.Marker({
position: latlng,
map: map,
title: locs[i][1],
});
如果我尝试分配值给var,我得到所有的地图引脚,但他们都有什么似乎是最后一个条目的标题:
var name = locs[i][1];
new google.maps.Marker({
position: latlng,
map: map,
title: name,
});
我做错了什么?
问题是google.maps.Marker
的选项包装在闭包{}
所以你最终传递了一个引用到i
它最终作为最后一个值
使用forEach
代替传统的for
循环
function
的存在应该允许name
保持它的值
locs.forEach(function (name) {
var markerdata = $.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + locs[i][0] + '&sensor=false', null, function (data) {
var p = data.results[0].geometry.location
latlng = new google.maps.LatLng(p.lat, p.lng);
new google.maps.Marker({
position: latlng,
map: map,
title: name
});
});
});
了解更多,这里是真正的答案…
JavaScript闭包内循环
相关文章:
- 需要帮助设置json数组
- 如何使用 node.js 比较两个 json 数组
- 根据id将json数组组合为一个json数组
- 如何创建JSON数组
- 如何将package.json数组传递给grunt.js
- 访问json数组中的对象
- JSON数组数据返回Undefined
- 如何向JSON数组动态添加属性
- 如何从json数组中获取特定值
- 从多维嵌套json数组创建下拉列表
- 在ListView中添加JSON数组中存储的图像-ReactNative
- jquery在json数组中循环
- 将 JSON 数组解析为 JavaScript 数组
- 如何在php中读取没有任何键的JSON数组
- 如何在Jquery中迭代JSON数组
- 如何在cycle js中从JSON数组创建组件
- 如何使用jquery返回php-json数组对象
- JSON数组转换为JS对象数组
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- 使用Underscore.js修改json数组中所选元素的更有效方法