Rails Google地图集成Javascript问题
更新I 根据反馈,我将var映射更改为var添加 问题描述 我在Rails 3.0.0.beta2上工作,遵循“菜谱32,在谷歌地图上标记位置”,我遇到了一个路障:我没有看到谷歌地图。我的@adds视图使用@adds.to_json将谷歌地图api与我的模型连接起来。我的数据库包含“纬度”“经度”作为浮点。整个项目可以在以下位置访问: 你能看到我没有用javascript正确连接到json输出的地方吗?你能在我的javascript中看到其他明显的错误吗?提前谢谢 My application.js文件:Rails Google地图集成Javascript问题,javascript,ruby-on-rails,json,google-maps,Javascript,Ruby On Rails,Json,Google Maps,更新I 根据反馈,我将var映射更改为var添加 问题描述 我在Rails 3.0.0.beta2上工作,遵循“菜谱32,在谷歌地图上标记位置”,我遇到了一个路障:我没有看到谷歌地图。我的@adds视图使用@adds.to_json将谷歌地图api与我的模型连接起来。我的数据库包含“纬度”“经度”作为浮点。整个项目可以在以下位置访问: 你能看到我没有用javascript正确连接到json输出的地方吗?你能在我的javascript中看到其他明显的错误吗?提前谢谢 My application.
function initialize() {
if (GBrowserIsCompatible() && typeof adds != 'undefined') {
var adds = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
map.addControl(new GLargeMapControl());
function createMarker(latlng, add) {
var marker = new GMarker(latlng);
var html="<strong>"+add.first_name+"</strong><br />"+add.address;
GEvent.addListener(marker,"click", function() {
map.openInfoWindowHtml(latlng, html);
});
return marker;
}
var bounds = new GLatLngBounds;
for (var i = 0; i < adds.length; i++) {
var latlng=new GLatLng(adds[i].latitude,adds[i].longitude)
bounds.extend(latlng);
map.addOverlay(createMarker(latlng, adds[i]));
}
map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
}
}
window.onload=initialize;
window.onunload=GUnload;
函数初始化(){
if(GBrowserIsCompatible()&&typeof adds!=“未定义”){
var adds=新的GMap2(document.getElementById(“map”);
赛特中心地图(新格拉特林(37.4419,-122.1419),13);
addControl(新的GlargeMappControl());
函数createMarker(latlng,add){
var标记=新的GMarker(latlng);
var html=“”+add.first\u name+”
“+add.address;
addListener(标记“单击”,函数(){
openInfoWindowHtml(latlng,html);
});
返回标记;
}
var bounds=新的GLatLngBounds;
对于(变量i=0;i
Layouts/adds.html.erb:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true_or_false&key=ABQIAAAAeH4ThRuftWNHlwYdvcK1QBTJQa0g3IQ9GZqIMmInSLzwtGDKaBQvZChl_y5OHf0juslJRNx7TbxK3Q" type="text/javascript"></script>
<% if @adds -%>
<script type="text/javascript">
var adds = <%= raw @adds.to_json %>;
</script>
<% end -%>
var加上=;
Rails控制台输出
a = Add.all
=> [#<Add id: 1, first_name: "Jason", last_name: "Wade", address: "225 Anzavista Ave, San Francisco, CA", address2: "", zip: "94115", city: "San Francisco", phone: "415-280-6678", float: nil, campaign_id: 1, email: "jwade@gmail.com", employer: "Google", occupation: "", created_at: "2010-04-06 14:00:36", updated_at: "2010-04-06 14:00:36", latitude: 37.779623, longitude: -122.445662>]
ruby-1.9.1-p378 > a.to_json
=> "[{\"address\":\"225 Anzavista Ave, San Francisco, CA\",\"address2\":\"\",\"campaign_id\":1,\"city\":\"San Francisco\",\"created_at\":\"2010-04-06T14:00:36Z\",\"email\":\"jwade@gmail.com\",\"employer\":\"Google\",\"first_name\":\"Jason\",\"float\":null,\"id\":1,\"last_name\":\"Wade\",\"latitude\":37.779623,\"longitude\":-122.445662,\"occupation\":\"\",\"phone\":\"415-280-6678\",\"updated_at\":\"2010-04-06T14:00:36Z\",\"zip\":\"94115\"}]"
a=Add.all
=> [#]
ruby-1.9.1-p378>a.to_json
=“{”地址“\”“225 Anzavista Ave,旧金山,CA \”,“AddisS2”:\“Actudio ID”:1,\\“城市”:\“旧金山”,\“CealthItAt\\”:“2010-04-06T14:00:36Z”,\“email \”:jwade@gmail.com\“,”雇主\“:”谷歌\“,”名字\“:”杰森\“,”浮动\“:空,\”id \“:1,\”姓氏\“:”韦德\“,”纬度\“:37.779623,\”经度\“:-122.445662,\”职业\“:\”,“电话\“:“415-280-6678\”,“更新地址\“:“2010-04-06T14:00:36Z\”,“zip\”:“94115\”)”
应该是
var bounds = new GLatLngBounds();
你最初是对的:
var map = new GMap2(document.getElementById("map"));
在哪里分配javascript变量adds?我假设您正在控制器中设置rails实例变量@adds,但您只分配给js变量maps。如果(GBrowserIsCompatible()&&typeof adds!=“undefined”){是的,将您的
var映射重命名为var adds
。注意您的编辑,您可以编辑您的问题以显示这些更改。您的问题不是很清楚,您能确认添加的类型未定义并且正在进行初始化吗?完成。(上面反映的变化)还有一个简单的“hello world”测试可以验证吗?我是一名rails开发人员,对javascript.Hi有一点了解。首先,你需要将“var adds=new GMap2(docu)”改回“var map=new GMap2(docu)”。检查这类事情的最简单方法是警报。放置警报(adds)和警报(adds!=“undefined”)在内联javascript中添加定义后。同时在初始化函数中发出警报,检查它是否正常工作。
var map = new GMap2(document.getElementById("map"));