从google地图上的JSON更新标记

2024-04-25 18:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

django1.8和python2.7。 我尝试使用jQuery和Ajax更新标记的位置。在

我的json对象只有一个数组:

[{"latitud": "55.75222", "ciudad": "Moscu", "longitud": "37.61556"}]

在初始化映射之后,我创建了这个函数来设置标记,还使用setTimeout来获取新的标记位置。在

^{pr2}$

结果是,当一个新的纬度和经度值输入到数据库时,我无法得到新的位置。 如果有人能帮我,我会很感激的


Tags: 对象函数标记jsonajax数组jquery纬度
2条回答

这是一个使用数据层的解决方案。在

可以使用setTime方法调用服务器:

var geoUrl = 'http://127.0.0.1:8000/maps/car/gpspos/';
$(document).ready(function(){
    setTimeout(function() {
        map.data.loadGeoJson(geoUrl);
    },5000);
});

但您必须以GeoJSON格式从服务器发送json

^{pr2}$

在对服务器的第二次调用中,每个特性都由其id更新,因此如果在服务器端更改了它的位置,那么它的位置也会发生变化。在

也可以使用此方法更改样式,此方法对绘制的每个要素都会调用该方法。或者事件,您可以获得特性的属性

map.data.setStyle(function(feature){
  //getting property
  var ciudad = feature.getProperty('ciudad');

  //setting style for each feature
  return({
      icon: '//example.com/path/to/image.png',
      fillColor: 'green'
  });

});

将前面的lat,long保存在一个变量中,当您再次向db请求时检查它。在

var lat, lng;

function setMarker(map) {

    $.getJSON('http://127.0.0.1:8000/maps/car/gpspos/', function(userPos) {
        userLat = userPos["userPosView"][0].latitud;
        userLon = userPos["userPosView"][0].longitud;
        if(lat == null){ lat = userLat; }
        if(lng == null){ lng = userLat; }
        if(userLat != lat && userLon != lng){
            lat = userLat;
            lng = userLong;

            //do stuff
            Console.log("lat lng changed");
        }
        var position = new google.maps.LatLng(userLat,userLon);
        var marker = new google.maps.Marker({
            position: position,
        });
        marker.setMap(map)
    });
}

我猜你是在请求db调用setMarker方法。在

相关问题 更多 >