Javascript根据数据动态创建图像/图标(标记)
我想在网站上显示一张地图(最初是谷歌地图)(例如,某个项目/比赛中一些跑步者的位置),以及一些带有每个跑步者姓名首字母的标记。也就是说,根据我以JSON格式获取的数据:Javascript根据数据动态创建图像/图标(标记),javascript,image,google-maps,google-maps-api-3,icons,Javascript,Image,Google Maps,Google Maps Api 3,Icons,我想在网站上显示一张地图(最初是谷歌地图)(例如,某个项目/比赛中一些跑步者的位置),以及一些带有每个跑步者姓名首字母的标记。也就是说,根据我以JSON格式获取的数据: data = [ { "lat": 44.363, "lng": 3.044, "full_name": "Paul Cardiff" } { "lat": 44.473, "lng": 3.144, "ful
data = [
{
"lat": 44.363,
"lng": 3.044,
"full_name": "Paul Cardiff"
}
{
"lat": 44.473,
"lng": 3.144,
"full_name": "Mark Zein"
}
...
]
我想用一个由其首字母识别的标记(markzein
-->M.Z.
)来表示每个跑步者在地图中的当前位置。例如(请原谅我的陈述):
我知道我可以创建一个带有自定义图标的google.maps.Marker
,但我发现很难根据我收到的数据(这可能会随着时间的推移而改变)创建这些图标
是否有一种从数据动态创建图像/图标的方法?或者你能想出另一种方法来生成这些图标吗
我一直在做一些研究,但到目前为止,我没有找到什么,所以任何帮助将不胜感激
编辑:
我目前正在模仿我获取数据的方式,但想法是从套接字获取数据。所以我现在的代码是:
var json_socket = {
"lat": 44.363,
"lng": 3.044,
"full_name": "Paul Cardiff"
};
以及如何添加标记:
var live_user = {lat: json_socket["lat"], lng: json_socket["lng"]};
var marker = new google.maps.Marker({
position: live_user,
map: map,
icon: "icon.png"
});
可以使用简单循环遍历标记数组 我用这个字母来显示首字母
var data = [{
"lat": 44.363,
"lng": 3.044,
"full_name": "Paul Cardiff"
} {
"lat": 44.473,
"lng": 3.144,
"full_name": "Mark Zein"
}
...
];
for (var i = 0; i < data.length; i++) {
var item = data[i];
var latLng = new google.maps.LatLng(item.lat, item.lng);
var initials = item.full_name.match(/\b(\w)/g).join('');
// Creating a marker and putting it on the map
var marker = new google.maps.Marker({
position: latLng,
map: map,
label: initials,
icon: "icon.png"
});
}
var数据=[{
“lat”:44.363,
“液化天然气”:3.044,
“全名”:“保罗·卡迪夫”
} {
“lat”:44.473,
“液化天然气”:3.144,
“全名”:“马克·泽恩”
}
...
];
对于(变量i=0;i
能否向我们展示您尝试创建这些标记的内容?从哪里获得这些数据?我现在在代码中添加了我所拥有的(只是一个模拟,因为我希望实际数据来自我将连接到的套接字)。也许我应该在服务器中创建标记?模拟目前还可以。您还应该向我们展示代码添加的标记,这只是google.maps.Marker
的正常方式。谢谢很好,谢谢你的回答。但是,这会将图标的标题设置为首字母,但我希望在地图中看到首字母,而无需鼠标悬停或单击标记。这就是为什么我想到“动态创建图标”,但我可能采取了错误的方法。好吧,对不起,我从来没有使用过谷歌地图标记。我将标题
更改为标签
。从文档来看,标签似乎将直接显示在标记中。你能试试吗?是的,如果我能设置一个合适的背景图标,并设置标签的格式,这可能会奏效。谢谢如果我能做到这一点,我会回信的!如果您需要,我仍然可以尝试帮助您,即使我真的不知道如何使用谷歌标记进行编码,heheI终于成功了,正如我在《非常感谢您》中看到的那样,更改了标签属性!
var data = [{
"lat": 44.363,
"lng": 3.044,
"full_name": "Paul Cardiff"
} {
"lat": 44.473,
"lng": 3.144,
"full_name": "Mark Zein"
}
...
];
for (var i = 0; i < data.length; i++) {
var item = data[i];
var latLng = new google.maps.LatLng(item.lat, item.lng);
var initials = item.full_name.match(/\b(\w)/g).join('');
// Creating a marker and putting it on the map
var marker = new google.maps.Marker({
position: latLng,
map: map,
label: initials,
icon: "icon.png"
});
}