使用两个不同表中的值在一个谷歌地图上显示标记


Show markers on one Google Map using values from two different tables

这是我的代码。它从数据库表中读取纬度和经度,并在地图上添加标记。我想做的是在其中添加另一个表,并根据其在同一地图上的纬度和经度值添加不同颜色的标记。我不知道如何从两个不同的表中获取纬度和经度,并用不同的颜色标记在地图上显示。

function initialize() {
    <?php echo "initializing: ";?>
    var position = new google.maps.LatLng(39.40233290,77.89265660 );
    var image = {
        url: 'images/image.png',
        // This marker is 20 pixels wide by 32 pixels high.
        size: new google.maps.Size(30, 32)
    };
    var myOptions = {
        zoom: 10,
        center: position,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    <?php       
    $sql="select latitude,longitude FROM coffeeshop ";
    $records = mysql_query($sql, $conn);
    if (!$records) {
        echo "Could not successfully run query ($sql) from DB: " . mysql_error();
        exit;
    }
    while($row = mysql_fetch_assoc($records)) {
        ?>
        var lat= <?php echo $row['latitude'] ?>;
        var long=<?php echo $row['longitude'] ?>;
        addMarker(lat,long);
        <?php echo $row['longitude'];
    }
    ?>
    var geocoder = new google.maps.Geocoder;
    var infowindow = new google.maps.InfoWindow;  
    var marker = new google.maps.Marker({
        position: position,
        map: map,
        title:"This is the place."
    });  
    var marker2 = new google.maps.Marker({
        position: position,
        map: map,
        icon: image,
        title:"This is the place."
    });  
    var contentString = 'Hello <strong>World</strong>!';
    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
        geocodeLatLng(geocoder, map, infowindow);
    });
    google.maps.event.addListener(marker2, 'click', function() {
        infowindow.open(map,marker2);
        geocodeLatLng(geocoder, map, infowindow);
    });
    function addMarker(lat,long) {
        var latlongMarker = new google.maps.LatLng(lat,long);
        var marker = new google.maps.Marker({
            position: latlongMarker, 
            map: map,            
        }); 
        var marker2 = new google.maps.Marker({
            position: latlongMarker, 
            map: map,
            icon:image,            
        }); 
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
            geocodeLatLng(geocoder, map, infowindow,marker);     
        });
    }    
}

我建议您使用ajax,从mysql函数中获取值。

使用ajax,您可以从特定的php方法获取数据。这种方法可以从数据库中收集所需的所有数据(在您的情况下,从两个表中),并将其准备为一个数组(您必须将其编码为json才能通过ajax获得)。

此外,代码也会更干净,因为您不会将php与javascript搞混。