【问题标题】:google maps api, markers and php/mysql谷歌地图 api、标记和 php/mysql
【发布时间】:2015-10-28 18:53:34
【问题描述】:

我有以下一段代码;

    <script type="text/javascript">
        var icon = new google.maps.MarkerImage("img/pin_yellow.png",
                   new google.maps.Size(32, 32), new google.maps.Point(0, 0),
                   new google.maps.Point(16, 32));
        var center = null;
        var map = null;

        var currentPopup;
        var bounds = new google.maps.LatLngBounds();

        var style= [{"stylers":[{"visibility":"on"},{"saturation":-100},{"gamma":0.54}]},{"featureType":"road","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"water","stylers":[{"color":"#4d4946"}]},{"featureType":"poi","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi","elementType":"labels.text","stylers":[{"visibility":"simplified"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"labels.text","stylers":[{"visibility":"simplified"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"gamma":0.48}]},{"featureType":"transit.station","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"gamma":7.18}]}];

        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
            });

            var popup = new google.maps.InfoWindow({
                content: info,
                maxWidth: 300
            });
            google.maps.event.addListener(marker, "click", function() {
                if (currentPopup != null) {
                    currentPopup.close();
                    currentPopup = null;
                }
                popup.open(map, marker);
                currentPopup = popup;
            });
            google.maps.event.addListener(popup, "closeclick", function() {
                map.panTo(center);
                currentPopup = null;
            });
        }

        function initMap() {
            map = new google.maps.Map(document.getElementById("map"),
            {
                center: new google.maps.LatLng(0, 0),
                zoom: 9,
                maxZoom: 16,
                minZoom: 3,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                scaleControl: true, // enable scale control
                panControl: false,
                mapTypeControl: false,
                streetViewControl: false,
                style: google.maps.ZoomControlStyle.SMALL, //zoom control size
                styles: style,
                navigationControl: true,
                navigationControlOptions:
                {
                    style: google.maps.NavigationControlStyle.ZOOM_PAN
                }
        });

        <?php

            $sql = "SELECT * FROM tbBaptism, tbLocation, tbChurch WHERE tbBaptism.idLocation=tbLocation.idLocation AND tbBaptism.idChurch=tbChurch.idChurch";

            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
                while($row = $result->fetch_assoc())
                {
                    $location = $row['location'];
                    $lat = $row['clat'];
                    $lng = $row['clng'];
                        $fname = $row['baptismForename'];
                        $sname = $row['baptismSurname'];
                        $dp_date = $row['baptismDate'];
                        $date = new DateTime($dp_date);
                        $churchName = $row['churchName'];

                        $combine = $fname . " " . $sname . ",<br>Baptised @ " . $churchName . "<br>" . $date->format('l jS F, Y');

                    echo("addMarker($lat, $lng, '<b>$location</b><br />$combine');\n");
                }
            } else {
                echo "No results to display or an error has occured";
            }


        ?>

        center = bounds.getCenter();
        map.fitBounds(bounds);
    }
    </script>

大部分 PHP 部分可以忽略,但这段代码从 Mysql 数据库和行中提取了一些坐标;

echo("addMarker($lat, $lng, '<b>$location</b><br />$combine');\n");

调用“addMarker”函数,输入 lat、lng 和一个文本字符串。

所有这些代码在创建标记时都非常有效......我遇到的问题是由于数据的性质,我创建的许多标记的纬度和经度都是相同的,因为它们是教堂的位置从数据库中提取(用于标记多个坟墓的位置),因此标记显示为一个在另一个之上(因此四个或五个标记显示为具有相同纬度/经度的一个)。

我想要做的是用完全相同的 lng/lat 对标记进行聚类或交错排列,以便它们都可以查看/可点击......谁能帮我修复我的代码来做到这一点,或者我是不是一个失败的原因? (javascript 不是我的强项!)

【问题讨论】:

  • Google 上出现的第一件事是this
  • 我已经通读了一遍,但必须承认此时此刻它超出了我的想象……它谈到了融合表并将其用作基础……我需要提取数据来自 MySQL 数据库,目前尚不清楚我是否可以使用该解决方案做到这一点(尽管我可能因为看这个太久而大脑衰退!)

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


【解决方案1】:

【讨论】:

  • 仅链接的答案不被视为好的答案。 It's not hard to earn enough rep to make comments.
  • 我也看过这个,我只是无法让它与我的代码一起工作,我找不到任何可下载(阅读:工作)代码来弄清楚如何集成它! ...
猜你喜欢
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2010-11-29
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多