日期:2014-05-17  浏览次数:20511 次

怎么获取百度坐标api返回的json格式字符串或对象呢
json不怎么熟,比如调用这个接口http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback获得返回的数据是这样的callback&&callback({"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"})
想得到x,y后面的加密数据,注意坐标比较多,需要批量
最好写个示例啊,
JSON callback API 百度

------解决方案--------------------
$url = 'http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback';
$s = file_get_contents($url);
strtok($s, '(');
$t = json_decode(strtok(')'), 1);
$t['x'] = base64_decode($t['x']);
$t['y'] = base64_decode($t['y']);
print_r($t);
Array
(
    [error] => 0
    [x] => 116.41261960075
    [y] => 39.914221142437
)

------解决方案--------------------
print_r( json_decode('{"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"}',true));

Array
(
    [error] => 0
    [x] => MTE2LjQxMjYxOTYwMDc1
    [y] => MzkuOTE0MjIxMTQyNDM3
)

x,y后面的值是base64 加密的
------解决方案--------------------
你这是 php 超时了
执行一下 set_time_limit(0);
------解决方案--------------------
json_decode 的第二个参数是指示是否对象也用数组返回,默认不是