1

我正在处理的地理定位脚本有一些问题,也许有人可以在这里帮助我:)。

对于这个脚本,我有 4 个文件:

函数.js

function geolocation(){
  GMaps.geolocate({
    success: function(position) {
        var userLat = position.coords.latitude;
        var userLng = position.coords.longitude;

        var dataString = 'userLat='+userLat+'&userLng='+userLng;

        $.ajax({
            type     : 'POST',
            url      : 'getEvents.php',
            data     : dataString,
            dataType : 'text',
            success  : function(msg){
                console.log(msg);
            }
        });
    },
    error: function(error) {
        alert('Echec de la localisation...');
    },
    not_supported: function() {
        alert('Votre navigateur ne supporte pas la géolocalisation...');
    }
});

}

索引.php:

<?php require 'php/getEvents.php'; ?>

<!DOCTYPE html>
<html lang="fr">
    <?php include('inc/head.html'); ?>

    <body>
        <div class="mosaic">
            <?php echo visitorMosaicBox($data); ?>
        </div>
        <script type="text/javascript">
            $(document).ready(function(){
                geolocation();
            });
        </script>
    </body>
</html>

获取事件.php:

<?php
    session_start();

    require 'db-connect.php';
    require 'lib.php';

    $userLat = $_POST['userLat'];
    $userLng = $_POST['userLng'];
    $area    = 10;
    $i       = 0;
    $data    = array();

    if($userLat != '' && $userLng != ''){
        if(isset($_SESSION['id'])){
            echo 'Logged';
        }else{
            try{
                $sql = "SELECT restaurants.cover, restaurants.name, restaurants.address, restaurants.location, restaurants.zip, events.title, events.trailer, events.id
                        FROM events 
                        LEFT JOIN restaurants ON restaurants.id = events.fk_restaurants";
                $req = $db->query($sql);    
            }catch(PDOException $e){
                echo 'Erreur: '.$e->getMessage();
            }

            while($res = $req->fetch()){
                $fetchAddress = $res['address'].', '.$res['zip'].' '.$res['location'];
                $fixedAddress = str_replace(' ','+',$fetchAddress);

                $geocode = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$fixedAddress.'&sensor=false');
                $output  = json_decode($geocode);

                $lat = $output->results[0]->geometry->location->lat;
                $lng = $output->results[0]->geometry->location->lng;

                $distance = distance($userLat, $userLng, $lat, $lng, false);

                if($distance <= $area){
                    $data[$i] = array( 
                        "id" => $res['id'],
                        "name" => $res['name'], 
                        "cover" => $res['cover'],
                        "address" => $fetchAddress,
                        "title" => $res['title'] ,
                        "trailer" => $res['trailer'],    
                    );
                    $i++;
                }
            }
        }   
    }else{
        $data = 'ERROR';
    }
?>

lib.php:

<?php
    function visitorMosaicBox($array){
        for($i=0; $i<sizeOf($array);$i++){
            $html  = '<div class="box" id="box-'.$i.'">';
            $html .= '<img src="'.$array[$i]['cover'].'" alt="'.$array[$i]['name'].'" />';
            $html .= '<span class="ribbon"></span>';
            $html .= '<div class="back"></div>';
            $html .= '<div class="infos" id="event-'.$array[$i]['id'].'">';
            $html .= '<p class="msg"></p>';

            $html .= '<div class="txt-1">';
            $html .= '<span class="sits"><span class="dinners">5</span></span>';
            $html .= '<h3>'.$array[$i]['title'].'<span class="block">'.$array[$i]['name'].'</span></h3>';
            $html .= '<ul class="actions">';
            $html .= '<li><a href="#" class="event-share">Partager</a></li>';
            $html .= '<li><a href="signup.php" class="join joinIn">Participer</a></li>';
            $html .= '<li class="last"><a href="#" class="event-info">Info</a></li>';
            $html .= '</ul>';
            $html .= '</div>'; // Fin de .txt-1

            $html .= '<div class="txt-2">';
            $html .= '<h3>'.$array[$i]['title'].'</h3>';
            $html .= '<p>'.$array[$i]['trailer'].'</p>';
            $html .= '<a href="#" class="close">Fermer</a>';
            $html .= '</div>'; // Fin de .txt-2

            $html .= '</div>'; // Fin de .infos
            $html .= '</div>'; // Fin de .box

            return $html;
        }
    }
?>

那么现在应该怎么做...

1 / functions.js对访问者进行地理定位,获取他的坐标(lat,lng)并将它们发送到我的getEvents.php

2 / getEvents.phpfunctions.js接收坐标,并将它们与数据库中的结果进行比较。

3 / 如果结果与用户之间的距离小于区域 (10),那么我将结果中的所有数据存储在我的数组$data中。

4 / 函数visitorMosaicBox()创建与我的数组中的结果一样多的 div。

5 / 在index.php中,我只需通过传递我的数组$data来调用visitorMosaicBox()

我的问题是即使有结果也不会创建 div我在我的getEvents.php文件中收到访问者的坐标,但在我的index.php文件中坐标不存在。

有谁知道为什么我的坐标不能从我的getEvents.php文件传递​​到我的index.php文件吗?有什么解决办法吗?

如果我将脚本拆分为这 4 个文件,那是因为我需要在getEvents.php文件上执行其他操作,具体取决于访问者是否已连接等...

感谢并为这个冗长的问题感到抱歉。安托

4

0 回答 0