【问题标题】:Using .php MySQL to add custom .png markers to map使用 .php MySQL 添加自定义 .png 标记来映射
【发布时间】:2017-10-28 13:17:29
【问题描述】:

我正在使用以下代码向地图添加标记,它工作正常,但我想在我的数据库中为标记图标添加另一个字段,以便我可以为数据库中的每个条目显示自定义标记图标。

有谁知道我需要什么来“回显”以便在查询数据库时为每个项目自定义 .png 标记?

<?php

     $query = mysqli_query($conn, "SELECT * FROM table")or die(mysql_error());

     while($row = mysqli_fetch_array($query)) {
        $logo = $row['logo'];
        $company = $row['company'];
        $lat = $row['lat'];
        $lon = $row['lon'];
        $desc = $row['desc'];

        echo("addMarker($lat, $lon, '<b>$logo</b><b>$company<br />$desc');\n");
     }
?>

【问题讨论】:

    标签: javascript php mysql google-maps google-maps-api-3


    【解决方案1】:

    在您的表格中添加另一个名为“marker”的字段(如果您没有为该行明确指定自定义标记,则可能使用默认值“marker.png”)。然后,在您向客户端回显的 JS 中包含自定义标记的名称:

    `

     $query = mysqli_query($conn, "SELECT * FROM table")or die(mysql_error());
    
     while($row = mysqli_fetch_array($query)) {
        $logo = $row['logo'];
        $company = $row['company'];
        $lat = $row['lat'];
        $lon = $row['lon'];
        $marker = $row['marker'];
        $desc = $row['desc'];
    
        echo("addMarker($lat, $lon, $marker, '<b>$logo</b><b>$company<br />$desc');\n");
     }
    

    ?>`

    然后在你的 addMarker() JS 函数中,用户 $marker 在显示图像的地图上写出一个图像标签。

    【讨论】:

    • 在您的 addMarker() 函数中,不要忘记将图像的 URL 路径添加到图像的名称前。例如,如果您尝试显示“Restaurant.png”,并且该图像位于 yourdomain.com/markerimages/Restaurant.png,则需要将 yourdomain.com/markerimages 添加到传递给 addMarker() 的标记名称之前
    • 另外,您可能需要考虑在某些时候重构您的代码,以便您的客户端脚本调用服务器以获取标记列表,然后服务器将列表作为您迭代的 JSON 返回在地图上显示标记。由于大多数 Web 应用程序都符合 MVC 设计范式,因此从服务器端脚本编写对 JS 函数的调用已变得不受欢迎。
    • 由于 $marker 随每条记录而变化,如何使用新的标记再次调用该函数?我的函数看起来像: function addMarker(lat, lng, info) { var pt = new google.maps.LatLng(lat, lng); bounds.extend(pt); var marker = new google.maps.Marker({ position: pt, icon: icon, map: map });
    • Google 在此处提供了如何自定义标记图标的说明:developers.google.com/maps/documentation/javascript/…
    【解决方案2】:

    您需要图片的完整地址。例如,如果您的网站存储在 www.example.com 上,使用 http 协议,您在 images/markers 文件夹中有这些标记,并且您将文件名存储在数据库中,您可以使用:

    (在 PHP 上设置文本同时):

    $icon = 'http://www.example.com/images/marker/' 。 $row['icon']; // 使用文件名读取名为 icon 的数据库行,例如 marker1.png 在此之后,我了解您对 google.maps.Marker() 的 addMarker 函数调用,在这些函数上,设置一个名为 icon 的新参数,并在它们上设置创建的 $icon 字符串。

    记住一点:如果您在 http 上加载页面,您可以在 http 或 https 上加载标记。但是如果你在 https 上加载,你可以从 http 资源中获取标记图像。

    【讨论】:

    • 我的问题不是图像位置,我只是不知道如何回显图标。在这行代码的某处,我需要添加图标信息,但没有任何效果: echo("addMarker($lat, $lon, '$logo$company
      $desc' );\n");
    • 此函数调用在 javascript 文件中定义的函数。如果您的问题是将其发送到谷歌地图,请将 $icon 放在 lon 和 '
    • $icon 是否需要“img scr”?它显示了这一点:addMarker(27.2441, -80.8268, , 'Regions Bank
      ' );
    • 不,您只需要传递我在回复中详细说明的数据。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签