繁体   English   中英

Google Maps API-标记,MySQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM