[英]Google Maps API - Marker, MySQL
我已经阅读了有关Google的地理编码服务的信息,该服务允许将命名的位置(例如曼彻斯特)映射到Google数据库的坐标,以便可以在Google Map上放置标记: https : //developers.google.com/maps/documentation/javascript / geocoding#地理编码
在我的情况下,我有一个定义了表jobs
的MySQL DB。 在此表中,我存储了工作信息(毫不奇怪),例如薪水,职位,参考资料等。在此表中,也有工作位置的列。 大多数情况下,它包含城市(或城市加邮政编码)。 奇数次它为NULL或具有诸如“未指定位置”之类的字符串。
要查看这些记录,我在测试机上运行了一个Web服务器,并在浏览器中使用一些HTML和通用php脚本(数据库驱动的Intranet页面)显示了该表的记录。
现在,我将该页面分为两部分。 使用Google Maps v3 API,我的下半部分包含Google Map。 我想要实现的是:
我想知道什么是最好的方法?
我在SO上已经阅读了一些类似的帖子,其中用户也遇到过类似的情况。 从这些读数中,我可以确定某些OP在将记录插入表中时已努力存储其记录位置的长/尾,然后使用Javascript读取长/尾以生成标记。
为此,我需要修改一些代码和表格。 这是一个选择,但我宁愿探索另一个可能正在使用Google地理编码服务的选择? 有人对此有经验吗? 您有什么建议,建议吗?
另外,可以说我使用了后者。 我使用PHP脚本从数据库加载记录。 如何将位置信息传递给Javascript,以便Google Map API可以通过地理编码服务查询长期/经时? 这是实现它的最佳方法吗?
谢谢。
只需使用Gmap3库,然后为它提供一个地址即可... http://gmap3.net/en/catalog/18-data-types/address-63
您设置了一个div ...
<div id="test" width=500 height=500></div>
然后,您的Jquery将地图插入div。
$("#test").gmap3({
marker:{
address: "Haltern am See, Weseler Str. 151"
},
map:{
options:{
zoom: 14
}
}
});
可以从您的PHP中回显该地址(不过,这被认为是不好的做法)
$("#test").gmap3({
marker:{
address: '<?php echo $addressfromDB;?>'
},
map:{
options:{
zoom: 14
}
}
});
但是最好执行ajax调用,然后在成功回调中包含此代码
$.getJSON('getlocation.php', function(data){
$("#test").gmap3({
marker:{
address: data.address // or whatever structure your json is in.
},
map:{
options:{
zoom: 14
}
}
});
});
那应该让你开始:)
听起来您已经准备就绪,除了Javascript和从PHP脚本获取数据的方式之外。
因此,让我们开始将数据从PHP脚本导入到Javascript中。 做到这一点的方法是使用AJAX(用于学习它,而不是官方资源: http : //www.w3schools.com/ajax/ajax_intro.asp )。 加载网页后,Javascript可以使用XMLHttpRequest对象(如果您更喜欢使用Javascript框架,则可以使用jQuery.ajax())来加载更多信息。 基本上,这是Javascript在后台加载新页面,然后自行处理内容。 您需要设置PHP脚本(或编写另一个脚本-我对这一部分不熟悉),以在您要访问的页面之外的单独URI中提供所需的信息。 然后,您可以在Javascript XMLHttpRequest中使用此URI。 通常,您将获得PHP脚本,以易于计算机理解的形式提供数据,例如JSON(推荐)或XML(与HTML相对应,易于理解-一旦呈现)。 此过程称为API。 在您的JavaScript中,您将使用JSON.parse()将响应文本转换为可以用来处理的实际变量。
使用Javascript获取地址后,请使用您提到的地理编码API将其转换为GPS坐标,然后使用Google Maps Javascript API在地图上放置标记: https : //developers.google.com/maps/documentation / javascript / overlays#Markers 。 您也可以添加一个信息窗口(在上一页中搜索InfoWindo-显然我只能包含2个链接)。
正如您已经提到的,对所有地址进行地理编码并将纬度/经度存储在数据库中可能是一个更好的主意。 这样做的最大原因是,如果您如上所述使用Java语言对地址进行地理编码,则每次用户加载页面时,都会重新进行地理编码。 这有两个问题:1.对于Google来说,这是一项昂贵的操作,会花费大量资源。 2.对您来说,这意味着地图填充需要更长的时间(因为您必须等待Google对AJAX调用的响应-地理编码,而不是如上所述将要实现的地理编码),并且您可能会遇到Google的使用限制是由于1而造成的。如果您决定提前进行地理编码并将结果存储在数据库中,则应该使用“ Google Geocoding API”,而不是Javascript Geocoding Service。 我无法添加其他链接,只能添加Google“ Google地理编码API”。
希望对您有所帮助,如果其他人想通过更多链接更新我的答案,请放心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.