2011-12-20 11 views
1

私が達成しようとしていることは、基本的には私のチャットにログインしているユーザーの場所をマークすることです。だから私はジオロケーションapi(http://code.google.com/apis/gears/api_geolocation.html)を使用して、生成された場所をセッション変数に保存します。しかしそれは働かない。ここにコードは `javascriptのPHP変数にアクセスする

<?php 
    $my_lat= $_GET['test'];    // get data 
    $my_long= $_GET['fname']; 
    $my_name = "vivek"; 
    $lat1=28.635308; 
    $long1=77.22496; 
    //$latitude = $_GET['latitude']; 
    //$longitude = $_GET['longitude'];// get data 
    echo $my_lat.''.$my_long; 
    ?> 

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key='' 
&sensor=true"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     if(navigator.geolocation) { 

      navigator.geolocation.getCurrentPosition(function(position) { 
      var lat = position.coords.latitude; 
      var longi= position.coords.longitude; 
      var url = 'bam.php'; 
     //post to the server! 
     $.get(url, { test: lat,fname: longi },function(data){ 
     alert('data was passed!'); 
     }); 


      }, function() { 
      //now is when the marking should be done. 
      handleNoGeolocation(true); 
      }); 

    } 
    }); 
</script> 

<script type="text/javascript"> 
    function initialize() { 
    var myLatlng = new google.maps.LatLng(28.635308,77.22496); 
    var myOptions = { 
     zoom: 4, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var thelat = '<?php echo $my_lat;?>'; 
    var thelong = '<?php echo $my_long;?>'; 
    var seslatlng = new google.maps.LatLng(thelat,thelong); 
    alert(seslatlng); 
    var marker = new google.maps.Marker({ 
     position: seslatlng, 
     map: map, 
     animation: google.maps.Animation.DROP, 
     title:"Hello world!", 
    }); 



} 

</script>` 

です。変数seslatlngは常に(0,0)に設定されていますが、これは私が望むものではありません。私はPHPに慣れていません。誰かがこれを修正してもらえますか?

+0

1)echo $ my_latを実行するとどうなりますか? ''。$ my_long? 2)クライアントのIPロケーションに基づいて地図を中央に配置するのではなく、地図の中心をハードコードされた値に設定するのはなぜですか? –

答えて

1

seslatlngを設定しているところはありません。あなたは、これはJS変数になりたい場合は、追加:

var seslatlng = "(<?php echo $my_lat . ',' . $my_lng; ?>)"; // (30.230, 8.030) 
+0

私はvar thelatとthelongを使ってseslatngを割り当てます。ここにコードはありますか?varthelat = '<?php echo $ my_lat;?>'; var thelong = '<?php echo $ my_long;?>'; var seslatlng = new google.maps.LatLng(thelat、thelong); –

+0

私は私が与えたコードを使用しましたが、$ my_latと$ my_lngはサーバーや何かから解析されるかもしれません。サーバが既に知っている値$ lat1と$ long1をうまく扱うことができます。ことは、クライアントのブラウザで何かを見る前に、コードのPHP部分がずっとコンパイルされていることです。私はそれを修正する方法を知らない。私はこれに新しいです。どんな助けでも大歓迎です! thnx –

1

あなたはjQueryのAjaxのget関数を使用している、何をしたいが、やっていることはのみは場所を返すことPHPの関数を呼び出しています。

var thelat = '<?=$my_lat?>'; 
var thelong = '<?=$my_long?>'; 

、それはあなたのために動作します:代わりにJavaScriptの変数、使用に値を割り当てるためを使用しての

<?php 

    if ($_GET['test']) { 
     $my_lat= $_GET['test'];    // get data 
     $my_long= $_GET['fname']; 
     $my_name = "vivek"; 
     $lat1=28.635308; 
     $long1=77.22496; 
     //$latitude = $_GET['latitude']; 
     //$longitude = $_GET['longitude'];// get data 
     echo $my_lat.''.$my_long; 
    } else { 
    ?> 

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key='' 
&sensor=true"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     if(navigator.geolocation) { 

      navigator.geolocation.getCurrentPosition(function(position) { 
      var lat = position.coords.latitude; 
      var longi= position.coords.longitude; 
      var url = 'bam.php'; 
     //post to the server! 
     $.get(url, { test: lat,fname: longi },function(data){ 
     alert('My location is: ' + data); 
     }); 


      }, function() { 
      //now is when the marking should be done. 
      handleNoGeolocation(true); 
      }); 

    } 
    }); 
</script> 

<script type="text/javascript"> 
    function initialize() { 
    var myLatlng = new google.maps.LatLng(28.635308,77.22496); 
    var myOptions = { 
     zoom: 4, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var thelat = '<?php echo $my_lat;?>'; 
    var thelong = '<?php echo $my_long;?>'; 
    var seslatlng = new google.maps.LatLng(thelat,thelong); 
    alert(seslatlng); 
    var marker = new google.maps.Marker({ 
     position: seslatlng, 
     map: map, 
     animation: google.maps.Animation.DROP, 
     title:"Hello world!" 
    }); 



} 

</script> 
<?php } ?> 
+0

しかし、私はwana返された場所を使用します。あなたは私に与えたコードを実行しようとしましたか?説明する必要があります。それは本当に私にとって意味をなさない。 –

2

:これはどのように見えるべきかです。私はまた、javascript変数にphp変数の値を割り当てることを試みました。

+2

これは '<?php echo $ my_long;?>'と意味的に同じですが、このバージョンではPHP/5.4より前に 'short_open_tag'を有効にする必要があります。 – DaveRandom

+0

必要に応じて弦をエスケープすることを忘れないでください!私はこの機能を使います:http://codepad.org/QOTeP3FY。この場合は数値があるので、理論的には必要ありません。 –

+0

@Rajat私が使用しているコードは完全に動作していますが、あなたのコードは(0,0)を指しています。何故かはわからない。 –

0

最良の方法は次のとおりです。json_encodeの

<script type="text/javascript"> 
    var something=<?php echo json_encode($a); ?>; 
</script> 

目的は、あなたのコードを破ることができる、引用符や他のエンティティ<?php echo $a; ?>をescpeすることです。

関連する問題