我正在创建一个地图,根据我网站上的人的IP显示。我想的是一张很酷的地图,显示了全球所有正在击中地图的地方。但我遇到了一个小问题。我正在跟踪ip,然后从他们处理Geo查询,最后我使用pusherapp将数据发布到地图上。但是,现在我可以通过在我的网站上附加数据来制作无序列表,但我无法弄清楚如何将其添加到我的谷歌地图中,也不能将该地图重绘为数据。有人可以帮我吗? 所以基本上在服务器端:
var bounds = new google.maps.LatLngBounds();
var latlng = new google.maps.LatLng( #{@a.lat}, #{@a.lng});
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
icon: 'images/marker.png',
map: map,
position: latlng,
title: 'Here'
});
bounds.extend(latlng);
map.fitBounds(bounds);
然后是客户端:
channel.bind('latitude', function(data){
$('#list').append(data);
});
但即使我确实让它进入脚本部分,谷歌地图会知道如何更新? 我真的希望将这一切保留在Rails中,而对于我现在正在使用pusher的服务 谢谢!
答案 0 :(得分:2)
感谢您使用我们的服务。
听到它的声音,您应该使用我们的presence functionality,这样您就可以跟踪用户离开和加入您的网站。
部分呈现功能是当用户订阅某个频道时,会对您的服务器进行AJAX调用。在该调用中,您可以进行IP查找,然后将该查找的详细信息(我建议只使用lat和long值)作为user_info
返回到状态请求。有关详细信息,请参阅Authenticating Users。这些文档还提供了一个Rails示例,用于对用户进行身份验证并为该用户提供user_info
。
当任何用户订阅客户端中的状态频道时,他们将获得initial list of connected users。您可以遍历该用户列表并获取每个用户的信息,并将标记添加到Google地图。当新用户加入时,您将在频道上获得member_added
events,并且您可以添加新标记。当用户离开时,您将获得member_removed
event,并且您可以删除标记。
客户端代码的示例可能是:
var channel = pusher.subscribe('presence-site-map-channel');
// Initial list of users on the site
channel.bind('pusher:subscription_succeeded', function(members) {
members.each(function(member) {
addMember(member);
});
});
channel.bind('pusher:member_added, addMember);
channel.bind('pusher:member_removed, function() { /* TODO: implement */});
function addMember(member) {
var bounds = new google.maps.LatLngBounds();
var latlng = new google.maps.LatLng( member.info.lat, member.info.long);
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
icon: 'images/marker.png',
map: map,
position: latlng,
title: member.info.id // each user must have a unique ID and you could use it here
});
bounds.extend(latlng);
map.fitBounds(bounds);
};