地理定位脚本问题

时间:2013-05-13 15:54:11

标签: php jquery html ajax

我遇到了一些我正在研究的地理定位脚本的问题,也许有人可以帮助我:)。

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

functions.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...');
    }
});

}

的index.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>

getEvents.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 对访问者进行地理定位,获取他的coordonates(lat,lng)并将其发送到我的 getEvents.php < / p>

2 / getEvents.php functions.js 接收协调,并将其与数据库中的结果进行比较。

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

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

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

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

有谁知道为什么我的coordonates无法从我的 getEvents.php 文件传递到我的 index.php 文件?有解决方案吗

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

对这个长期问题表示感谢和抱歉。 Antho

0 个答案:

没有答案