我正在将 Django 模型中的数据序列化为 json,并将该信息放在 Google 地图的信息窗口中。到目前为止它工作正常。但我还想包含一个指向每个实际对象的链接,以便用户可以单击一个将他们带到完整报告的 url。我不确定如何使用 json 来完成此操作,因为我仍在处理它。
本质上使用 json 在 Google Map infowindow 中提供指向实际对象的链接,在这种情况下是“故事”模型。我希望实际故事的链接出现在 Google Map info 窗口中。
这是我的看法:
def all_stories(request):
if not request.user.is_authenticated():
return redirect("django.contrib.auth.views.login")
all_stories = Story.objects.select_related().order_by('-date')
storyJson = []
for story in all_stories:
storyJson.append({
"latitude": story.latitude,
"longitude": story.longitude,
"headline": story.title,
"copy": story.copy,
'author': story.author.username,
'topic': story.topic
})
return render_to_response("report/storyline.html",
{'stories': all_stories,
"story_Json":json.dumps(storyJson)},
context_instance=RequestContext(request))
这是与显示当前信息相关的模板部分:
function loadMarkers(stories){
for (i=0;i<stories.length;i++) {
var story = stories[i];
(function(story) {
var pinColor = "69f2ff";
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=S|" + pinColor,
new google.maps.Size(21, 34),
new google.maps.Point(0,0),
new google.maps.Point(10, 34));
var point = new google.maps.LatLng(story.latitude, story.longitude);
var marker = new google.maps.Marker({position: point, map: map, icon: pinImage});
var infowindow = new google.maps.InfoWindow({
content: '<div >'+
'<div >'+
'</div>'+
'<h2 class="firstHeading">'+story.headline+'</h2>'+
'<div>'+
'<p>'+story.author+'</p>'+
'<p>'+story.topic+'</p>'+
'<p>'+story.copy+'</p>'+
'</div>'+
'</div>'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,this);
});
})(story);
}
}
任何有关如何实现这一点的见解将不胜感激。