我有一个正在使用的定位系统,它使用 gmap3.net jquery 插件进行 Googlemap 交互。
当指针是静态的时,我可以毫无问题地放置指针,但是动态地这样做有困难,我知道有一个错误,我似乎无法发现它。
我设法让 eval 工作,它只是缺少一些括号,但是,eval 只检测到一个对象,它似乎忽略了逗号后的所有内容。
所以这是启动地图更改的Javascript:
//Clear old map
$('#map').gmap3('destroy').html('');
var ajaxURL = BASE_URL + 'ajax/getPeopleNearMe/';
$.ajax({
type: 'POST',
url: ajaxURL,
data: {
filter: filter
},
success: function(data){
$('#map').gmap3({
getgeoloc:
{
callback:function(latLng)
{
if(latLng)
{
//Found
$(this).gmap3({
marker:
{
values:[eval("(" + data + ")"],
},
map:
{
options:
{
zoom:12,
mapTypeControl: false,
navigationControl: true,
streetViewControl: false
}
}
});
}
else
{
//Not found
}
}
}
});
}
});
然后这里是在 get people near me 函数上调用的 PHP。
function getPeopleNearMe()
{
$apiHandler = new APIHandler();
$result = $apiHandler->usersWithinRadius();
$json = json_decode($result);
$items = '';
if($json->value->results != null)
{
if($json->value->numberOfResults > 0)
{
$count = 0;
foreach($json->value->results as $result)
{
$items .= '
{
latLng:['.$result->lat.','.$result->lon.'],
options:
{
shadow:
{
url: "'.BASE_URL.'css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "'.$result->user->profileImage.'",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
}';
if($count <= $json->value->numberOfResults){ $items .= ','; $count++;}
}
}
}
echo $items;
}
我得到的错误是类型错误:
TypeError: '
{
latLng:[37.3323,-122.031],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS84My8xMzYxODk2MDE2LmpwZw==/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},
{
latLng:[37.3343,-122.049],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS8xNDEva2F5c2FtcGxlLmpwZw==/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},
{
latLng:[37.3323,-122.031],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS8xNDIvMTM5Mzk0MF80NDcwMDYwOC5qcGc=/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},' is not a valid argument for 'in' (evaluating '"address" in O[L]')
我相信问题在于它将数据变量视为字符串而不是对象......但是没有运气尝试了 eval,不知道我还能做什么......提前致谢!