Grails / Groovy数字分隔符丢失,调用$ .getJSON

时间:2018-03-16 09:57:46

标签: json grails google-maps-api-3 groovy


我正在尝试将带有坐标的JSON对象从我的控制器传递到我的视图并在google-map上呈现它 我的控制器以正确的方式使用数字处理器返回坐标,例如:“lat”:6.12345,但在使用$ .getJSON调用函数后,jqueryobject中的lat没有分隔符,例如:“lat” “:612345个
我的控制器看起来像:

def eventsJson = {
    def list = []
    events.each { event ->
        list.push([
                name: event?.name as String
                ,lat:  event?.place?.latitude as Float
                ,lon:  event?.place?.longitude as Float
        ])
    }
    render(list as JSON)
}

我的Jquery看起来像:

$.getJSON("event/eventsJson", function (data) { 
    $.each(data, function (i, item) {
                alert(item.lon);
                var tmp = {lat: item.lat, lng: item.lon};
                var marker = new google.maps.Marker({
                    position: tmp,
                    map: map
                    });


    });
});


我很满意任何意见和建议......! :)

1 个答案:

答案 0 :(得分:0)

我不理解event?.place?.latitudeevent?.place?.longitude。 我正在考虑eventplace是不同的域名,并且它们之间存在关联。

因此,您需要更改EventController,如下所示:

首先您需要导入import grails.converters.JSON

def eventsJson = {
HashMap eventsMap = new events()
List eventsList = Events.list()

eventsMap.events= eventsList .collect {event->
return [name: event.name, lat: event.place.latitude, lon: event.place.longitude]
}

render eventsMap as JSON

gsp jQuery如下:

$.getJSON("event/eventsJson", function (data) { 
    $.each(data.eventsMap, function (i, item) {
                var tmp = {lat: item.lat, lng: item.lon};
                var marker = new google.maps.Marker({
                    position: tmp,
                    map: map
                    });


    });
});

我不确定jQuery。所以请根据要求进行检查和修改。