在Google地图上使用Django放置标记 [英] Placing markers on Google Map With Django

查看:233
本文介绍了在Google地图上使用Django放置标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用API​​和HTML5地理位置,将基于存储在模型中的纬度和经度的标记放置在Google地图上。



问题是如何使用模板关键字循环遍历存储在JavaScript标签中的每个对象的lat / lon信息,我不相信可以在Django中完成。



我发现了一个类似的这里的问题在Javascript中添加带有DJango模板标签的Google地图标记我轻轻修改并放置在一个模板中,而不是一个单独的脚本文件 - 但似乎不起作用:

  function loadMarkers(){
{%for story in stories%}
var point = new google.maps.LatLng({{story.latitude}},{{story.longitude}}) ;
var marker = new google.maps.Marker({
position:point,
map:map
});
{%endfor%}
}

有关如何正确循环的任何见解通过存储的Django对象中的项目,使用lat,lon信息,并将其放置在使用API​​的Google Map上,将非常感谢。

p>我使用 django-geoposition 来管理我的地理数据



来自django.db的导入模型
从geoposition.fields导入的$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $
$ b $ models.CharField(max_length = 50)
kuerzel = models.CharField(max_length = 3)
kn_nr = models.CharField(max_length = 5)
beschreibung = models.CharField(max_length = 300)
adresse = models.CharField(max_length = 100)
position = GeopositionField()



<来自geo.models的p> view.py

 从django.shortc导入区域
uts import render_to_response,get_object_or_404,redirect

def ShowZonen(request):
zone = Zone.objects.all()
return render_to_response('zonen.html',{zone :zone})


def showZoneDetail(request,zone_id):
zone = Zone.objects.get(id = zone_id)
返回render_to_response('zonendetail .html',{zone:zone})

模板
zonendetail.html

 < script type =text / javascriptsrc =http://maps.google ?的.com /地图/ API / JS传感器=假>< /脚本> 
< script type =text / javascript>

var map;
函数initialize(){
var mapDiv = document.getElementById('map-canvas');
map = new google.maps.Map(mapDiv,{
center:new google.maps.LatLng(48.208174,16.373819),
zoom:12,
mapTypeId:google。 maps.MapTypeId.ROADMAP
});

google.maps.event.addListenerOnce(map,'tilesloaded',addMarkers);

}
函数addMarkers(){

{%为区域%中的标记}
var point = new google.maps.LatLng({{ mark.position.latitude}},{{mark.position.longitude}});
var image ='{{STATIC_PREFIX}}'+'checkmark.png';
var marker = new google.maps.Marker({
position:point,
map:map,
icon:image,
url:'http:// 172.16.0.101:8882/zone/'+ {{mark.id}},
title:'{{mark.id}}',
});
marker ['infowindow'] = new google.maps.InfoWindow({
content:< h1> {{mark.name}}< / h1>< br> {{mark。 name}}< p>< a href = \http:\ / \ / 172.16.0.101:8882\ / zone\ / {{mark.id}} \> {{mark .name}}< / a>,
});
google.maps.event.addListener(marker,'click',function(){
//window.location.href = this.url;
this ['infowindow']。open (map,this);
});
google.maps.event.addListener(marker,'mouseover',function(){
// this ['infowindow']。open(map,this);
});
google.maps.event.addListener(marker,'mouseout',function(){
// this ['infowindow']。close(map,this);

});





{%endfor%}

}


google.maps.event.addDomListener(window,'load',initialize);
< / script>


I'm trying to place markers based on the latitude and longitude stored in a model on a Google Map using the API and HTML5 geolocation.

The issue is how to loop through the lat/lon info for each object stored within JavaScript tags using template keywords, which I don't believe can be done in Django.

I found a similar question here Adding Google Map Markers with DJango Template Tags in Javascript which I mildly modified and placed within a template – not a separate script file – but it doesn't seem to work:

function loadMarkers(){
        {% for story in stories %}
            var point = new google.maps.LatLng({{story.latitude}},{{story.longitude}});
            var marker = new google.maps.Marker({
            position: point,
            map: map
        });
        {% endfor %}    
    }

Any insight on how to properly loop through items in a stored Django object with lat, lon info and place these on a Google Map using the API would be very appreciated.

解决方案

I use django-geoposition to manage my geodata

from django.db import models
from geoposition.fields import GeopositionField

class Zone(models.Model):
    name = models.CharField(max_length = 50 )
    kuerzel = models.CharField(max_length = 3 )
    kn_nr = models.CharField(max_length = 5 )
    beschreibung = models.CharField(max_length = 300 )
    adresse = models.CharField(max_length = 100 )
    position = GeopositionField()

view.py

from geo.models import Zone
from django.shortcuts import render_to_response, get_object_or_404, redirect

def ShowZonen(request):
    zone=Zone.objects.all()
    return render_to_response('zonen.html', {"zone": zone})


def showZoneDetail(request, zone_id):
    zone=Zone.objects.get(id=zone_id)
    return render_to_response('zonendetail.html', {"zone": zone})

template zonendetail.html

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

  var map;
  function initialize() {
    var mapDiv = document.getElementById('map-canvas');
    map = new google.maps.Map(mapDiv, {
      center: new google.maps.LatLng(48.208174,16.373819),
      zoom: 12,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);

  }
  function addMarkers() {

      {% for mark in zone %}
        var point = new google.maps.LatLng({{mark.position.latitude}},{{mark.position.longitude}});
            var image = '{{ STATIC_PREFIX }}'+ 'checkmark.png';
            var marker = new google.maps.Marker({
            position: point,
            map: map,
            icon: image, 
            url: 'http://172.16.0.101:8882/zone/' + {{mark.id}},
           title: '{{ mark.id }}',
        });
             marker['infowindow']  = new google.maps.InfoWindow({
                     content: "<h1>{{mark.name}}</h1> <br> {{ mark.name }} <p> <a href=\"http:\/\/172.16.0.101:8882\/zone\/{{ mark.id }}\"> {{ mark.name }}</a>",
        });
            google.maps.event.addListener(marker, 'click', function() {
                //window.location.href = this.url;
                 this['infowindow'].open(map, this);
            });
           google.maps.event.addListener(marker, 'mouseover', function() {
                // this['infowindow'].open(map, this);
                    });
           google.maps.event.addListener(marker, 'mouseout', function() {
                // this['infowindow'].close(map, this);

            });





        {% endfor %}    

  }


  google.maps.event.addDomListener(window, 'load', initialize);
</script>

这篇关于在Google地图上使用Django放置标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆