不能从PHP文件更改Google Maps标记的图标

Can't change the icon of a Google Maps marker from a PHP file

本文关键字:Maps 图标 Google PHP 文件 不能      更新时间:2023-09-26

我使用google maps API制作从数据库检索数据并在地图上显示相应标记的地图。我是按照下面的说明来做的:https://developers.google.com/maps/articles/phpsqlajax_v3

我现在要做的是创建一个具有可拖动标记的页面(称为add_marker.php),以便用户可以根据坐标将新标记添加到数据库中。当我在这页上的时候,我希望能看到其他的标记。我还包括地图代码在所有的页面,所以我不希望它彻底改变只是为了这个页面,所以我的方法是以下:使可拖动的标记不可见的所有页面,除了add_marker页面通过设置图标设置为空字符串"。现在的问题是,我不能改变图标的图像,所以我可以看到它在特定的页面,我想要它可见。我在stackoverflow中搜索了相当多,并找到了一些解决方案,但这些都不起作用。我得到的错误是:add_marker.php:9未捕获的引用错误:未定义drag_marker(尽管我已经将标记变量设置为全局)

代码如下:

map_code.php(这是我在链接的帮助下创建的页面,除了一些变量名之外,几乎与该代码相同。它包含在使用map

的文件中。

如有任何帮助,不胜感激

  <!DOCTYPE html>
          <head>
            <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
            <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
            <title>PHP/MySQL & Google Maps Example</title>
            <script src="https://maps.googleapis.com/maps/api/js?key=MY_KEY"
                    type="text/javascript"></script>
            <script type="text/javascript">
            var drag_marker;
            function load() {
              var map = new google.maps.Map(document.getElementById("map"), {
                center: new google.maps.LatLng(37.511769, 22.371699),
                zoom: 13,
                mapTypeId: 'roadmap'
              });
              var infoWindow = new google.maps.InfoWindow;
              downloadUrl("phpsqlajax_genxml.php", function(data) {
                var xml = data.responseXML;
                var markers = xml.documentElement.getElementsByTagName("marker");
                for (var i = 0; i < markers.length; i++) {
                  var name = markers[i].getAttribute("name");
                  var content = markers[i].getAttribute("content");
                  var type = markers[i].getAttribute("type");
                  var point = new google.maps.LatLng(
                      parseFloat(markers[i].getAttribute("latitude")),
                      parseFloat(markers[i].getAttribute("longitude")));
                  var content = markers[i].getAttribute("content");
                  var icon = 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png';
                  var marker = new google.maps.Marker({
                    map: map,
                    position: point,
                    icon: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png'
                  });

                  bindInfoWindow(marker, map, infoWindow, content, name);
                }
              });
                *var uluru = {lat: 37.52, lng: 22.37};
                drag_marker = new google.maps.Marker({
                  icon: " ",
                  draggable: true,
                  position: uluru,
                  map: map
                });*
            }
            function SelectElement(valueToSelect)
            {    
            var element = document.getElementById("markerList");
            element.value = valueToSelect;
            }
            function bindInfoWindow(marker, map, infoWindow, html, name) {
              google.maps.event.addListener(marker, 'click', function() {
                infoWindow.setContent(html);
                infoWindow.open(map, marker);
                        infoWindow.setContent("<p>" + name + "<br />" + 
                         html + "<br />");   
                SelectElement(name);
              });
            }
            function downloadUrl(url, callback) {
              var request = window.ActiveXObject ?
                  new ActiveXObject('Microsoft.XMLHTTP') :
                  new XMLHttpRequest;
              request.onreadystatechange = function() {
                if (request.readyState == 4) {
                  request.onreadystatechange = doNothing;
                  callback(request, request.status);
                }
              };
              request.open('GET', url, true);
              request.send(null);
            }
            function doNothing() {}
          </script>
          </head>
          <body onload="load()">
            <div id="map" style="width: 99.5%; height: 40%"></div>
          </body>
        </html>

add_marker.php:

<html>
 <head>
  <title>My website</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" type="text/css" href="style.css" />
  <script type="text/javascript">
        drag_marker.setIcon("http://maps.google.com/mapfiles/ms/icons/red-dot.png");

        </script>';
 </head>
 <body>
 <div id="container">
   <div id="header">
    <h1><a href="Home.php"><img src="logo.png" align="center" alt="logo" style="width:300px;height:60px;"></a><a href="http://gav.uop.gr/"><img src="gavlab.png" align="right" alt="logo" style="width:200px;height:55px;"></a></h1>
   </div>
   <div id="content">
    <div id="nav">
     <h3>Πλοήγηση</h3>
     <ul id="menu">
      <li><a href="Home.php">Homepage</a></li>
      <li align="left"><a href="Map.php">Map</a></li>
      <li><a href="index.php">Admin log-in</a></li>
      <li><a href="About.php">info</a></li>
      <li><a href="Contact.php">Contact</a></li>
     </ul>
    </div>
    <div id="main">
     <h6 align="center">Map</h6>
     <?php   include("map_code.php");   ?>
<div align="center" id="admin_menu">
 <?php
    error_reporting(E_ALL & ~E_NOTICE ^ E_DEPRECATED ^ E_WARNING );
//http://www.clker.com/cliparts/e/3/F/I/0/A/google-maps-marker-for-residencelamontagne-hi.png
//        icon:"http://maps.google.com/mapfiles/ms/icons/red-dot.png",
  SESSION_START();
     if($_SESSION['username'] == "admin"||$_SESSION['username'] == "username"){
        echo '<p align="center" style="color:#8A2908"> Welcome <a href="logout.php"> εδώ.</a></p>';
    $con= mysql_connect('localhost','root','');
    mysql_set_charset('utf8');
    mysql_select_db('qr code');
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $con);

    $sql="SELECT * FROM array1";
    $records=mysql_query($sql);
    echo '<form id="main_form" name = "add_new_marker" action="marker_info.php" method="post">';

    '</form>';
    }
        else echo '<p align="center" style="color:#8A2908">Please log in <a href="index.php"> εδώ.</a></p>';     
    ?>
     </div>
    </div>
   </div>
   <div id="footer">
    Copyright &copy; 2016 Name Here
   </div>
  </div>
 </body>
</html>

您试图在定义drag_marker变量之前使用它(也可能在初始化之前,查看浏览器中呈现的HTML/JavaScript)。

要处理计时问题,请尝试:

google.maps.event.addDomListener(window, 'load', function() {
 drag_marker.setIcon("http://maps.google.com/mapfiles/ms/icons/red-dot.png");
}):