使用MYSQL加载Google标记

时间:2019-01-01 04:31:36

标签: javascript php html5 google-maps mysqli

我在Stack上查找了此问题的其他示例,但它们要么使用JQUERY要么使用XML进行加载,但这不是我用来填充Map的内容。

地图工作得很好,但是当我尝试将PHP变量引用为LatLng时,标记不起作用。我试图回显LatLng变量并使用Heredocs,但没有任何效果。

<? php
    // I MADE QUERIES HERE AND ADDED THEM INTO "$coords"


echo<<<_

    <!DOCTYPE html>
    <html>
    </style>
    <body>
    <div class="Banner">
        <div class="TitleText">Sonic Strains &copy;</div>
    </div>
    <div class="login">Logout</div>
    <div class="gallery" id="container">
        <div class="map" id="mapInsert"></div>
        <div class="navButton">Start Nav</div><div class="orderButton">Order Details</div>
        <div class="abortButton">Abort</div><div class="confirmButton">Confirm</div><div class="disclaimer"></div>
    </div>
    <script>
          function initMap() {  
            navigator.geolocation.getCurrentPosition(function(position) {
                var initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                var Map = new google.maps.Map(document.getElementById('mapInsert'));
                Map.setCenter(initialLocation);
                Map.setZoom(8);
            }, function(positionError) {
                //---------- User denied geolocation prompt - default to Chicago
                Map.setCenter(new google.maps.LatLng(39.8097343, -98.5556199));
                Map.setZoom(5);
            },{enableHighAccuracy:true, timeout: 3000, maximumAge:1000});}
                //MAKE ANOTHER MARKER FOR THE CLIENT LOCATION
                var userLocation = {lat:$coords[user_lat], lng:$coords[user_long]};
                var marker = new google.maps.Marker({
                    position:userLocation, 
                    map:Map,
                    draggable:false, 
                    clickable:false
                });
                marker.setMap(Map);}
    </script>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[API_KEY]&callback=initMap" 
        async defer></script>
    </body>
    </html>


_;

?>

错误-

  

“ SyntaxError:意外令牌<”

这是我尝试引用PHP LatLng标记位置的地方,为什么不允许我引用PHP?

2 个答案:

答案 0 :(得分:0)

问题出在开头标签上。您使用的标签无效:

<? php

(请注意问题和PHP关键字之间的空白)。

您需要将其更改为正确的打开PHP标记,例如:

<?php

此外,在代码上,您需要回显var,因为您对此没有做任何事情。

var userLocation = {lat:<?php echo $coords[user_lat]; ?>, lng: <?php echo $coords[user_long]; ?>};

(((EDIT))

好的,对代码进行新的修订,我可以看到至少一个问题:

您正在使用以下语法创建POI:

            var userLocation = {lat:$coords[user_lat], lng:$coords[user_long]};
            var marker = new google.maps.Marker({
                position:userLocation, 
                map:Map,
                draggable:false, 
                clickable:false
            });

检查我自己的代码,有一个功能poi添加代码:

    newmarker = new google.maps.Marker({
        map: map,
        key: marker[0],
        name: marker[1],
        lat: marker[3],
        lon: marker[4],
        content: marker[9],
        position: new google.maps.LatLng(marker[3], marker[4]),
        icon: icon
    });

很多代码(键,名称等)可能是可选值,但是,您要向位置值添加一个数组,而不是LatLng值。

如果该代码不起作用,请直接检查您的HTML代码(而不是在PHP上),因为在阻止加载过程的代码上您可能会感到有些奇怪(例如,php无法正确填充值)。 / p>

答案 1 :(得分:0)

问题是标记声明在initMap()之外。当我将标记移到“主要功能”内部