【问题标题】:I am unable to get Coordinates from ajax to the google map script我无法从 ajax 获取坐标到谷歌地图脚本
【发布时间】:2017-09-28 18:52:50
【问题描述】:

这是我的 places.php 文件 这里我从数据库中获取我的坐标,我已经通过回显检查了它很好,我与数据库的连接也很好。在这里,我制作了一个自执行函数,它在无限循环中重复自身,每当数据库中的值发生更改或更新时,我的标记位置也会更新。代码非常简单,但看起来我的 ajax 成功变量不起作用。

include 'connection.php';
$myque = mysqli_query($con, 'Select * from places where id=1');
$gtloc = mysqli_fetch_array($myque);
$lati = $gtloc['lati'];
$long = $gtloc['longi'];


echo lati.",".$long;
//echo $long;
}

在这里,我收到了 ajax 成功响应并将其分配给一个变量,但它不起作用。

插入直接坐标显示地图,但我需要使标记响应数据库坐标而不刷新页面。将我的变量插入到 lat & long 中,地图就完全消失了

<!DOCTYPE html>
    <html>
     <head>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
         <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>


    <script>

        function test(){ 
        //ajax call goes here

    $.ajax({
        url: "places.php",
        type: "GET",
        async: true,
        data:  {"id": 1},
        success : function(value){
                    //alert("RESPONSE");
                var data = value.split(",");
                var latitude  = (data[0]);
                var longitude  = (data[1]); 
            }      
        });


      window.setTimeout(function(){
        test();
      }, 1500);
        }
            $(document).ready(function(){
            test();
            });


      </script>
      <script>
          function initMap() {
      var uluru = {lat: latitude  , lng: longitude };
      var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 15,
      center: uluru
      });
      var marker = new google.maps.Marker({
      position: uluru,
      map: map
      });
      }
      </script>

      </head>
      <body>
    <script></script>
      <h2>My Places</h2>
      <div  id="map" style="height: 700px;width: 100%;"></div>
      <!--map script --> 
      <!-- / Map Script-->
      <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBYBZxCetgqbsCQU3mxZ622GwNdSglEVN4&callback=initMap"></script>
      </body>
  </html>

【问题讨论】:

  • 我只知道坐标应该存储为BSON,而不是常规的JSON。
  • 因为纬度和经度的范围仅限于 Ajax 调用,并且您假设它会在 init 触发之前返回......
  • 你能帮我做一个小提琴吗

标签: javascript php jquery ajax google-maps


【解决方案1】:

问题在于这些是字符串值。尝试制作纬度/经度浮点变量...

var lat = parseFloat(latitude);
var long = parseFloat(longitude);

在你的例子中:

    success : function(value){
                //alert("RESPONSE");
            var data = value.split(",");
            var latitude  = (data[0]);
            var longitude  = (data[1]); 
        } 

只需像这样添加 parseFloat:

        var latitude  = parseFloat(data[0]);
        var longitude  = parseFloat(data[1]); 

我认为它会解决它。

【讨论】:

  • 它确实解决了我的问题,但我还必须刷新我的地图功能以更新我的标记位置。现在每 3 秒我的 ajax 与数据库同步并检查值,我的地图也会闪烁以根据 ajax 响应更改变量值。
  • 在地图上快速闪现真的很烦人:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多