php 经纬度坐标转化

1.如何实现以下数据,把坐标显示在百度地图上

经度            纬度        
112˚49.0382´    23˚59.3728´    
112˚49.0248´    23˚59.1681´
112˚49.1274´    23˚59.034´
112˚49.1986´    23˚58.9272´
112˚49.394´     23˚58.6538´
112˚49.3983´    23˚58.654´
112˚49.4483´    23˚58.5872´
112˚49.509´     23˚58.5099´
112˚50.1618´    23˚58.2176´

阅读 7.4k
4 个回答

话说题主这个数据居然是使用带分的度数来表示。囧。而百度API一般都是只要浮点型的度数。这之间需要做一个解析转换。

而PHP中对度数的˚符号的处理好尴尬:

我建议把˚先处理下,然后再解析转换,如:

function parseDegree($s) {
    $s = str_replace(['˚', '´'], ['D', ''], $s);
    if (preg_match('/^(\d+)D(\d+(?:\.\d+))$/', $s, $m)){
        return $m[1] + $m[2] / 60.0;
    }
    
    return false;
}

使用这个函数就可以将题主的数据转换成百度地图API所需要的格式了,如:

>>> parseDegree('112˚49.0382´')
=> 112.81730333333
>>> parseDegree('23˚59.3728´')
=> 23.989546666667

各种地图API的链接楼上都已经贴了,我就不罗嗦了

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
    <title>添加动画标注点</title>
</head>
<body>
    <div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(116.404, 39.915);
    map.centerAndZoom(point, 15);
    var marker = new BMap.Marker(point);  // 创建标注
    map.addOverlay(marker);               // 将标注添加到地图中
    marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
</script>

参考这个demo。http://lbsyun.baidu.com/jsdem...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题