Maison  >  Article  >  interface Web  >  Explication détaillée du partage d'exemples de code de géolocalisation HTML5 pour obtenir des informations de localisation géographique

Explication détaillée du partage d'exemples de code de géolocalisation HTML5 pour obtenir des informations de localisation géographique

黄舟
黄舟original
2017-03-18 15:59:201867parcourir

Cet article présente principalement Html5 Des exemples de géolocalisation permettant d'obtenir des informations de localisation géographique. Il a une certaine valeur de référence. Les étudiants intéressés peuvent en apprendre davantage.

Html5 fournit une API pour les informations de localisation géographique, qui peuvent obtenir la position actuelle de l'utilisateur via le navigateur. Sur la base de cette fonctionnalité, des applications de services basées sur la localisation peuvent être développées. Avant d'obtenir des informations de localisation géographique, le navigateur demandera d'abord à l'utilisateur s'il souhaite partager ses informations de localisation, et celles-ci ne pourront être utilisées qu'après l'accord de l'utilisateur.

Html5 obtient des informations de localisation géographique via l'API de géolocalisation, en utilisant sa méthode getCurrentPosition. Il y a trois paramètres dans cette méthode, qui sont la fonction de rappel qui est exécutée lorsque les informations de localisation géographique sont réussies. obtenu. La fonction de rappel et les éléments de configuration de propriété facultatifs exécutés en cas d'échec.

La démo suivante montre l'obtention d'informations de localisation géographique via la géolocalisation et l'affichage de l'emplacement actuel sur Baidu Map (en appelant l'API Baidu Map). Les résultats expérimentaux montrent que l'emplacement est situé à l'entrée de la 4ème route de Huandong dans la ville universitaire. L'écart par rapport à mon emplacement (le dortoir des étudiants de HuaGong) est encore un peu grand, atteignant environ 200 à 300 mètres.

Explication détaillée du partage d'exemples de code de géolocalisation HTML5 pour obtenir des informations de localisation géographique

Le code est le suivant (convertor.js est le fichier de conversion de coordonnées fourni par Baidu Maps) :

<!DOCTYPE html>
<html>
    <head>
        <title>H5地理位置Demo</title>
        <script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript">
        </script>
        <script type="text/javascript" src="convertor.js">
        </script>
    </head>
    <body>
        <p id="map" style="width:600px; height:400px">
        </p>
    </body>
    <script type="text/javascript">
        if (window.navigator.geolocation) {
            var options = {
                enableHighAccuracy: true,
            };
            window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);
        } else {
            alert("浏览器不支持html5来获取地理位置信息");
        }
        
        function handleSuccess(position){
            // 获取到当前位置经纬度  本例中是chrome浏览器取到的是google地图中的经纬度
            var lng = position.coords.longitude;
            var lat = position.coords.latitude;
            // 调用百度地图api显示
            var map = new BMap.Map("map");
            var ggPoint = new BMap.Point(lng, lat);
            // 将google地图中的经纬度转化为百度地图的经纬度
            BMap.Convertor.translate(ggPoint, 2, function(point){
                var marker = new BMap.Marker(point);
                map.addOverlay(marker);
                map.centerAndZoom(point, 15);
            });
        }
        
        function handleError(error){
        
        }
    </script>
</html>

fichier convertor.js :

(function() { // 闭包
    function load_script(xyUrl, callback) {
        var head = document.getElementsByTagName(&#39;head&#39;)[0];
        var script = document.createElement(&#39;script&#39;);
        script.type = &#39;text/javascript&#39;;
        script.src = xyUrl;
        // 借鉴了jQuery的script跨域方法
        script.onload = script.onreadystatechange = function() {
            if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                callback && callback();
                // Handle memory leak in IE
                script.onload = script.onreadystatechange = null;
                if (head && script.parentNode) {
                    head.removeChild(script);
                }
            }
        };
        // Use insertBefore instead of appendChild to circumvent an IE6 bug.
        head.insertBefore(script, head.firstChild);
    }
    function translate(point, type, callback) {
        var callbackName = &#39;cbk_&#39; + Math.round(Math.random() * 10000); // 随机函数名
        var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type
                + "&to=4&x=" + point.lng + "&y=" + point.lat
                + "&callback=BMap.Convertor." + callbackName;
        // 动态创建script标签
        load_script(xyUrl);
        BMap.Convertor[callbackName] = function(xyResult) {
            delete BMap.Convertor[callbackName]; // 调用完需要删除改函数
            var point = new BMap.Point(xyResult.x, xyResult.y);
            callback && callback(point);
        }
    }

    window.BMap = window.BMap || {};
    BMap.Convertor = {};
    BMap.Convertor.translate = translate;
})();

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn