将多个标记位置从PHP传递到Googlemap jquery

时间:2013-11-08 23:51:26

标签: php jquery wordpress google-maps

我正在尝试构建一个在googlemap上显示用户位置的wordpress插件。地址被地理编码并保存为geo_address的纬度/经度长串。

然后我尝试检索该数据并将其传递给googlemap使用的Markers数组。

获取地理数据的代码是:

   $blogusers = get_users_of_blog();
   if ($blogusers) {
   foreach ($blogusers as $bloguser) {
   $user = get_userdata($bloguser->user_id);
   $user_location = get_the_author_meta('geo_address', $bloguser->ID );

   $gLocations = '[User ID ' . $user->ID . ', ' . $user_location .'],';

然后我尝试将其添加到标记数组中:

   var markers = "[<?php $gLocations ?>]";

如果我回显$ gLocations,它会显示为完全格式化的标记数组,但在gmaps中它不会显示任何内容。

完整的gmap代码位于 http://jsfiddle.net/nE2Ge/

2 个答案:

答案 0 :(得分:1)

首先,你的javascript'marker'变量应该是一个数组,而不是一个字符串,就像你在你的小提琴中创建的那样你在php周围使用引号来输出markers变量的值是错误的。其次,你评论的不是一个有效的javascript数组:

[User ID 1, ], [User ID 43, 51.5784897,-0.02016619999994873], [User ID 44, 58.3498003,11.935649000000012], [User ID 45, 58.2234382,11.920179500000017],

这会导致错误,因为必须引用字符串,因为在用户ID 1周围没有引号。所以你的php需要:

$gLocations = '["User ID ' . $user->ID . '", ' . $user_location .'],';

或者在$ gLocations

之后可能是一个dotEquals(。=)

然后当您在视图中输出$ gLocations时,在javascript代码中

var markers = [<?php echo $gLocations ?>];

另外,您应该添加一些检查标记[i] [1]和标记[i] [2]是否确实存在。还应根据$ user_location是否有效,在php代码中优化插入逗号到$ gLocations。

答案 1 :(得分:0)

在创建JavaScript变量时,您似乎错过了回声。没有回声,没有任何东西被添加到标记var。尝试

var markers = "[<?php echo $gLocations ?>]";

您还可以添加console.log(标记)以验证标记是否包含正确的标记。

console.log(markers);