`
hudeyong926
  • 浏览: 2034784 次
  • 来自: 武汉
社区版块
存档分类
最新评论

百度地图接口

 
阅读更多
<!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>

 点击获取经纬度以及地址

var geoc = new BMap.Geocoder();
map.addEventListener("click", function(e){
    //通过点击百度地图,可以获取到对应的point, 由point的lng、lat属性就可以获取对应的经度纬度
    console.log(e.point.lng + ", " + e.point.lat);
    var pt = e.point;
    geoc.getLocation(pt, function(rs){
        //addressComponents对象可以获取到详细的地址信息
        var addComp = rs.addressComponents;
        var site = addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber;
        //将对应的HTML元素设置值
        $("#site").val(site);
        $("#longitude").val(pt.lng);
        $("#latitude").val(pt.lat);
    });
});

 获取两点间距离,可以算出覆盖区域,比如覆盖区域10个坐标和中心点算距离

<script type="text/javascript">
	// 百度地图API功能
	var map = new BMap.Map("allmap");
	map.centerAndZoom("重庆",12);  //初始化地图,设置城市和地图级别。
	var pointA = new BMap.Point(106.486654,29.490295);  // 创建点坐标A--大渡口区
	var pointB = new BMap.Point(106.581515,29.615467);  // 创建点坐标B--江北区
	alert('从大渡口区到江北区的距离是:'+(map.getDistance(pointA,pointB)).toFixed(2)+' 米。');  //获取两点距离,保留小数点后两位
	var polyline = new BMap.Polyline([pointA,pointB], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});  //定义折线
	map.addOverlay(polyline);     //添加折线到地图上
</script>

3 坐标转换

我们知道,Google地图、soso地图与百度地图的坐标是不一样的,通常会差挺远一段距离。因此我们在微信中使用百度地图导航等百度地图API时,若 根据微信获取的用户位置信息的话,得到的结果通常是不准确的。这时我们就需要把微信获取的用户位置坐标转换成百度地图对应的坐标才可以。百度地图坐标转换API是一套以HTTP形式提供的坐标转换接口,用于将常用的非百度坐标(目前支持GPS设备获取的坐标、google地图坐标、soso地图坐标、amap地图坐标、mapbar地图坐标)转换成百度地图中使用的坐标

 

圆形区域搜索

<script type="text/javascript">
	// 百度地图API功能
	var map = new BMap.Map("allmap"); // 创建Map实例 divid=allmap
	var mPoint = new BMap.Point(116.404, 39.915);  
	map.enableScrollWheelZoom(true); //开启滚轮缩放
	map.centerAndZoom(mPoint,15); //坐标设置为地图中心点,缩放级别15

	var circle = new BMap.Circle(mPoint,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3});
    map.addOverlay(circle);
    var local =  new BMap.LocalSearch(map, {renderOptions: {map: map, autoViewport: false}});  
    local.searchNearby('餐馆',mPoint,1000);
</script>
百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。
geolocation的位置信息来源包括GPS、IP地址、RFID、WIFI和蓝牙的MAC地址、以及GSM/CDMS的ID等等。规范中没有规定使用这些设备的先后顺序,在HTML5的实现中,手机等移动设备当然优先使用GPS定位,而笔记本和部分平板,最准的定位是WIFI,至于网线上网的台式机,一般就只能使用IP来定位了,这个准确度最低。
<?php
/**
 * @desc 根据两点间的经纬度计算距离 输出距离/米
 * @param float $lat 纬度值
 * @param float $lng 经度值
 */
function getDistance($lat1, $lng1, $lat2, $lng2)
{
    $earthRadius = 6378138; //近似地球半径米
    $lat1 = ($lat1 * pi()) / 180;
    $lng1 = ($lng1 * pi()) / 180;
    $lat2 = ($lat2 * pi()) / 180;
    $lng2 = ($lng2 * pi()) / 180;
    $calcLongitude = $lng2 - $lng1;
    $calcLatitude = $lat2 - $lat1;
    $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
    $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
    $calculatedDistance = $earthRadius * $stepTwo;
    return round($calculatedDistance);
}
/**
 *计算某个经纬度的周围某段距离的正方形的四个点
 *
 * @param lng float 经度
 * @param lat float 纬度
 * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
 * @return array 正方形的四个点的经纬度坐标
 */
public function returnSquarePoint($lng, $lat, $distance = 0.5) {
    $earthRadius = 6378.138; //近似地球半径km
    $dlng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat)));
    $dlng = rad2deg($dlng);
    $dlat = $distance / $earthRadius;
    $dlat = rad2deg($dlat);
    return array(
        'left-top' => array('lat' => $lat + $dlat, 'lng' => $lng - $dlng),
        'right-top' => array('lat' => $lat + $dlat, 'lng' => $lng + $dlng),
        'left-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng - $dlng),
        'right-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng + $dlng)
    );
}
//计算实体建筑与当前坐标的距离,按距离升序
function calculationEntitiesFromLocation($local_x, $local_y)
{
    foreach ($results as $info) {
        $distance = getDistance($local_x, $local_y, $info->lat, $info->lng);
        $shopSortArrays[$distance] = $info;
    }
    ksort($shopSortArrays); //排序
    return $shopSortArrays;
}

 

百度地图API地理位置和坐标转换

1.由地名(省份、城市、街道等)得到其对应的百度地图坐标:

http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&address=北京市

2.由坐标反解得到对应的地址:http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&location=纬度(Latitude),经度(Longitude)

function geoCoder() {
    marker.setPosition(point);
    var send = {
        ak: "{:C('BAIDU_MAP_AK')}",
        location: point.lat + ',' + point.lng,
        output: 'json',
        pois: 1
    };
    $.ajax({
        url: 'http://api.map.baidu.com/geocoder/v2/',
        dataType: 'jsonp',
        data: send,
        success: function (data) {
            if (data.status == 0 && data.result) {
                var pois = data.result.pois;
                addressList = pois;
                makeList(pois);
            }
        }
    })
}

$squares = $this->returnSquarePoint($latitude, $longitude, 5);
//查询范围内的坐标
"where latitude between {$squares['right-bottom']['lat']} and {$squares['left-top']['lat']} and longitude between {$squares['left-top']['lng']} and {$squares['right-bottom']['lng']}";

 
 

 
 
 
  • html5geo.rar (1.1 KB)
  • 描述: html5的geolocation来获取经纬度
  • 下载次数: 0
  • 大小: 83.3 KB
分享到:
评论

相关推荐

    百度地图接口程序

    【百度地图接口程序】是一种基于百度地图API的开发示例,旨在帮助开发者了解和学习如何在自己的应用程序中集成和利用百度地图的服务。这个程序能够提供基础的地图展示、定位、路径规划等多种功能,对于想要涉足地图...

    百度地图 接口 源码 javascript

    标题中的“百度地图接口源码javascript”指的是使用JavaScript语言实现的百度地图API接口代码,它允许开发者在网页中集成和操作百度地图的功能。百度地图API是百度提供的一种服务,允许开发者通过JavaScript语言来...

    百度地图接口源文件与例子.gz

    本压缩包"百度地图接口源文件与例子.gz"提供了一个使用Qt框架实现的示例,帮助开发者理解和应用百度地图的接口。这里我们将深入探讨相关知识点。 首先,**百度地图接口**是百度开放平台提供的服务,它允许开发者...

    百度地图接口范例

    下面将详细介绍“百度地图接口”及其应用实例。 1. **百度地图API概述** 百度地图API是百度提供的免费服务,它为开发者提供了丰富的地图功能接口,包括地图展示、标注、地理编码、反地理编码、路线规划、轨迹服务...

    调用百度地图接口单击获取地图的经纬度和定位特效

    在IT行业中,地图接口的使用是常见的需求,特别...总之,调用百度地图接口能够轻松地在网页上实现地图交互,包括获取经纬度和添加各种视觉效果。通过不断探索和实践,开发者可以利用这些功能构建出富有创意的GIS应用。

    Winform调用百度地图接口

    在本文中,我们将深入探讨如何在Windows Forms(Winform)应用程序中调用并集成百度地图接口,以便在应用中展示地图功能。首先,我们需要理解Winform的基本概念,它是一种.NET Framework下的用户界面框架,用于创建...

    Weather基于百度地图接口的PHP天气信息组件

    【描述】描述中的"基于百度地图接口"意味着此组件利用了百度地图提供的地理定位和气象数据服务。通过调用百度地图的API,可以获取到指定地点的温度、湿度、风向、风力等详细天气信息。"PHP天气信息组件"则表明这是一...

    调用百度地图接口获取位置,亲测可用

    调用百度地图接口获取位置,亲测可用

    Android集成百度地图接口,实现定位+路径规划。

    在Android应用开发中,集成百度地图接口是一项常见的需求,它能为用户提供丰富的地图服务,如定位、导航、路径规划等。下面将详细讲解如何在Android项目中实现这一功能。 首先,你需要在百度地图开放平台...

    Winform调用百度地图接口(续1)

    在本项目"Winform调用百度地图接口(续1)"中,我们主要关注的是如何在Windows Forms应用程序(Winform)中利用百度地图的API来实现更丰富的交互功能。以下是关于这个项目的详细知识点: 1. **百度地图API**: 百度...

    毕设&课程作业_智能班车管理系统。ssh后台框架。包含百度地图接口。.zip

    智能班车管理系统是一个典型的计算机应用项目,它结合了SSH后台框架和百度地图接口,适用于高校、企业等场景,方便用户预约和管理班车服务。这个系统源码对于学习和研究计算机科学,尤其是软件工程的学生来说,是一...

    C#百度地图接口多个示例

    地图过2秒移动中心点 地图控件创建 添加标注 添加折线 事件 涂层 地图标注 步行路线导航 步行路线覆折线 3D地图切换 经纬度查询 地图查询 ...三维地图导航 自定义标注与百度地址实现导航 ...百度查询接口耗时

    利用百度地图接口建立人社自助服务一体机导航地图.pdf

    利用百度地图接口建立人社自助服务一体机导航地图.pdf

    百度地图API地图描点示例

    百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/...

Global site tag (gtag.js) - Google Analytics