0
我使用django-geoposition管理我的地理數據。 在我的Home.html:使用geoposition的Django標記
<!-- Add Google Maps -->
<script>
function myMap() {
{% for posts in post_list %}
myCenter=new google.maps.LatLng(34.8402781,135.592376);
var myLocation=new google.maps.LatLng({{posts.position.latitude}},{{posts.position.longitude}});
var mapOptions= {
center:myCenter,
zoom:7, scrollwheel: true, draggable: true,
mapTypeId:google.maps.MapTypeId.HYBRID
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapOptions);
var marker = new google.maps.Marker({
position: myLocation,
title:'{{ posts.title }}',
draggable: false,
});
marker.setMap(map);
{%endfor%}
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCB1CA2DoITfJoFY4HWTLTxH4Avx7QWWqA&callback=myMap"></script>
,但它只是在地圖上顯示的拳頭後的製造商。我猜for循環不起作用。我不知道該怎麼辦。我將不勝感激任何幫助!
models.py
from django.db import models
from geoposition.fields import GeopositionField
class Post(models.Model):
title = models.CharField(max_length=100)
introduction = models.TextField(blank=True)
reason = models.TextField(blank=True)
transportation = models.TextField(blank=True)
basic_info = models.TextField(blank=True)
photo = models.URLField(blank=True)
location = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
position = GeopositionField(blank=True)
website = models.URLField(blank=True)
useful_link = models.URLField(blank=True)
def __str__(self):
return self.title
views.py:
from django.shortcuts import render
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import Post
def home(request):
posts = Post.objects.all()
paginator = Paginator(posts, 6) #每頁顯示十個
page = request.GET.get('page')
try :
post_list = paginator.page(page)
except PageNotAnInteger :
post_list = paginator.page(1)
except EmptyPage :
post_list = paginator.paginator(paginator.num_pages)
return render(request, 'attractions/home.html', {'post_list': post_list,})
def post_detail(request, pk):
post = Post.objects.get(pk=pk)
return render(request, 'attractions/post.html', {
'post': post,
})
景點\ urls.py
from django.conf.urls import url
from . import views
app_name = 'attractions'
urlpatterns = [
url(r'^$',views.home, name = 'home'),
url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail')
]
urls.py:
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^',include('attractions.urls')),
url(r'^markdown/', include('django_markdown.urls')),
]
admin.py:
from django.contrib import admin
from .models import Post
from django_markdown.admin import MarkdownModelAdmin
from django_markdown.widgets import AdminMarkdownWidget
from django.db.models import TextField
class PostAdmin(MarkdownModelAdmin):
list_display = ('title','position',) #顯示欄
search_fields = ('title',) #搜索欄
ordering = ('created_at',) #減號表示降序
formfield_overrides = {TextField: {'widget': AdminMarkdownWidget}}
admin.site.register(Post,PostAdmin)
謝謝paralosreg。 因爲我是python和django的新手,我對基於類的視圖有點想法。稍後我會試着弄清楚。 我試過你的方法,但我不知道我是否按照你的建議。 我把這樣的循環: {%post_list%中的帖子} \t var myLocation = new google.maps.LatLng({{posts.position.latitude}},{{posts.position.longitude}}); \t {%endfor%} 但是,地圖仍顯示一個位置,這是post_list中的第一個位置。 您有任何進一步的建議嗎? –
我認爲你的問題是在Javascript中。檢查這個職位https://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example多個標記。你必須用「for」生成「var locations」。在視圖中一切正常。鏈接後面的 – paralosreg
,我做了這樣的變化:var marker = []; (var i = 0; i <100; i ++){ \t var 012 = \t \t var latLng = new google.maps.LatLng(post [i] .latitude,post [i] .longitude); \t \t var marker = new google.maps.Marker(latLng); \t \t markers.push(marker); \t \t} \t var markerCluster = new MarkerClusterer(map,markers); 但地圖上仍然沒有顯示標記。 –