我正在尝试将带有坐标的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
});
});
});
我很满意任何意见和建议......! :)
答案 0 :(得分:0)
我不理解event?.place?.latitude
和event?.place?.longitude
。
我正在考虑event
和place
是不同的域名,并且它们之间存在关联。
因此,您需要更改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。所以请根据要求进行检查和修改。