我正在尝试构建一个在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/
答案 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);