Django モデルのデータを json にシリアル化し、その情報を Google マップの情報ウィンドウに配置しています。これまでのところ正常に動作します。しかし、ユーザーが完全なレポートに移動する URL をクリックできるように、実際の各オブジェクトへのリンクも含めたいと思います。まだハンドルを取得しているため、jsonを使用してこれを達成する方法がわかりません。
基本的に json を使用して、Google マップの情報ウィンドウに実際のオブジェクト (この場合は「ストーリー」モデル) へのリンクを提供します。実際のストーリーへのリンクを Google マップの情報ウィンドウに表示したいと考えています。
これは私の見解です:
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);
}
}
これを達成する方法についての洞察は大歓迎です。