0

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

然后我试图检索该数据并将其传递给 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/

4

2 回答 2

1

首先,您的 javascript 'markers' 变量应该是一个数组,而不是一个字符串,就像您在小提琴中创建的那样,您在 php 周围使用引号来输出标记变量的值是错误的。其次,您评论的不是有效的 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 ( .= )

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

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

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

于 2013-11-09T11:47:20.587 回答
0

创建 JavaScript 变量时,您似乎缺少回显。如果没有回声,则不会将任何内容添加到标记变量中。尝试

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

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

console.log(markers);
于 2013-11-09T00:50:30.897 回答