【问题标题】:Google Maps API - setting php variable as javascript variableGoogle Maps API - 将 php 变量设置为 javascript 变量
【发布时间】:2011-06-01 05:22:51
【问题描述】:

我正在使用 Google Maps API 和 W3C 标准来获取用户的地理位置。我已将其设置为基础 - 使用 [Google 文档][1] 中的代码。

现在我将其集成到我的网站中,并需要将其输入到我的 mysql 数据库中。我想将 PHP 变量设置为 JavaScript 变量(基本上将 PHP 变量设置为纬度和经度)。但我没有成功。

编辑:

基本上我想做$phpvar = $jsvar。制作一个 php 变量 = 我的 javascript 变量。

代码如下:

var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag =  new Boolean();

function initialize() {
  var myOptions = {
    zoom: 6,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  // Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  // Try Google Gears Geolocation
  } else if (google.gears) {
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeoLocation(browserSupportFlag);
    });
  // Browser doesn't support Geolocation
  } else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }

  function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
      alert("Geolocation service failed.");
      initialLocation = newyork;
    } else {
      alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
      initialLocation = siberia;
    }
    map.setCenter(initialLocation);

} }

任何帮助都会很棒!请具体说明一下,因为我是这个 Google Map API 的新手。

谢谢! :)

【问题讨论】:

  • 如果你能提供一些你正在使用的代码,在代码的帮助下会更容易解释。基本语法就像我在回答中所说的那样。
  • Stoic,请查看我的编辑以及我正在使用的代码。
  • 似乎您更希望将 Javascript 变量存储到您的 SQL 数据库中。如果是这样,您将需要使用 AJAX(这比 DOM hacking 更容易,恕我直言)

标签: php geolocation google-maps-api-3


【解决方案1】:

您可以像这样将 PHP 变量存储为 Javascript 变量:

<script type="text/javascript">
    var geoloc = '<?php echo $geoloc; ?>';
</script>

然后您可以根据需要使用此变量。如果你能给出一个示例代码,我会尽量让你更准确地知道。

【讨论】:

  • 这很容易被注入 - 如果 $geoloc 包含单引号怎么办?现在你已经破坏了这个 javascript 块。就像 mysql_real_escape_string() 用于 SQL 工作一样,您需要在插入 javascript 之前通过 json_encode() 运行。
  • Hey Marc.. 这是一个示例语句.. 由于他使用的是纬度和经度,因此他实际上不需要在这里使用 json_encode 来增加自己的复杂性。此外,通常情况下,示例行肯定需要根据需要进行更改。
【解决方案2】:

“想要将 PHP 变量设置为 Javascript 变量”。这不是很清楚吗?

如果你想去 PHP->Javascript,那很简单:

var myVar = <?php echo json_encode($some_php_var) ?>;

对于 Javascript->PHP,它有点复杂。你必须做一些 DOM hacking 才能将值插入表单值/提交表单,或者做一些 AJAX 工作。

【讨论】:

    【解决方案3】:

    这是我目前为 Lat 和 Lng 设置 php 变量然后使用 Javascript 调用它们的方式:

    function initMap() {
      var geoLat = parseFloat("<?php echo h($location['lat']); ?>");
      var geoLng = parseFloat("<?php echo h($location['lng']); ?>");
      var theLocation = {lat: geoLat, lng: geoLng};
    
    var map = new google.maps.Map(
        document.getElementById('map'), {
        zoom: 16,
        center: theLocation
    });
    

    我正在使用 parseFloat() 函数 parseFloat

    这有助于解决某些人可能遇到的 VS Code 中的 Lat/Lng Object Literal 错误消息和标记/lint 错误。我希望这对您和其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多