【问题标题】:Custom Google Map Icon If Value >=1如果值 >=1,则自定义 Google 地图图标
【发布时间】:2011-08-15 13:40:15
【问题描述】:

我正在使用下面的代码,使用 MySQL 数据库中的位置数据在 Google 地图上正确显示标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>All Locations</title>
        <link rel="stylesheet" href="css/alllocationsstyle.css" type="text/css" media="all" />
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=en"></script>
        <script type="text/javascript"> 
            var customIcons = {
            0: {
            icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png',
            shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
            },
            1: {
            icon: 'http://labs.google.com/ridefinder/images/mm_20_green.png',
            shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
            }
            };

            function load() { 
            var map = new google.maps.Map(document.getElementById("map"), { 
            center: new google.maps.LatLng(54.312195845815246,-4.45948481875007), 
            zoom:6, 
            mapTypeId: 'roadmap' 
            }); 

            var infoWindow = new google.maps.InfoWindow;

            // Change this depending on the name of your PHP file 
            downloadUrl("phpfile.php", function(data) { 
            var xml = data.responseXML; 
            var markers = xml.documentElement.getElementsByTagName("marker"); 
            for (var i = 0; i < markers.length; i++) { 
            var locationname = markers[i].getAttribute("locationname"); 
            var address = markers[i].getAttribute("address");
            var finds = markers[i].getAttribute("finds");
         var totalfinds = markers[i].getAttribute("totalfinds");
            var point = new google.maps.LatLng( 
            parseFloat(markers[i].getAttribute("osgb36lat")), 
            parseFloat(markers[i].getAttribute("osgb36lon")));
            var html = locationname + ', No.of finds: ' + "<b>" + totalfinds + "</b>";
            var icon = customIcons[totalfinds] || {};
            var marker = new google.maps.Marker({          
            map: map, 
            position: point,
            title: address,
            icon: icon.icon,
            shadow: icon.shadow
            }); 
          bindInfoWindow(marker, map, infoWindow, html);
            } 
            }); 
            } 

            function bindInfoWindow(marker, map, infoWindow, html) {
            google.maps.event.addListener(marker, 'click', function() {
            infoWindow.setContent(html);
            infoWindow.open(map, marker);
            });
            }

            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"></div>
            </body> 
            </html>

就目前而言,确定所显示的标记是红色还是绿色的代码是纯粹的,并且只是其中一个字段的值是“0”还是“1”。

我想做的是改变它以反映值是“0”还是“1”或“大于1”来确定标记的颜色。

以我有限的知识,我尝试过使用 '>1', '>=1' 但没有奏效。

我只是想知道是否有可能有人可以请我指出正确的方向,以便我可以让它工作。

【问题讨论】:

  • 我没有看到任何检查值是 0 还是 1 的代码。您确定您粘贴了正确的代码吗?您可以将代码粘贴到 jsfiddle.net 并提供链接吗?编辑:(值 >= 1 应该可以工作,但通过完整的代码示例更容易判断)
  • 您好,首先非常感谢您抽出宝贵时间阅读和回复我的帖子,其次,很抱歉没有让这个更清楚。我正在谈论的行是自定义图标分配给“0”或“1”值的位置。我想做的是将'1'更改为'大于或等于1'。我试过'> = 1','> 0','if(> = 1)',不幸的是没有成功。非常感谢和亲切的问候。克里斯

标签: javascript google-maps-api-3 google-maps-markers


【解决方案1】:

@IRHM - 感谢您的回复,现在很清楚了。

您示例中的“0”和“1”只是“命名”这两个图标的方式。 'cat' 和 'dog' 将是同样有效的名称,例如

var customIcons = {
  cat: {
    icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png',
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
  },
  dog: {
    icon: 'http://labs.google.com/ridefinder/images/mm_20_green.png',
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
  }
};

您的代码今天恰好可以工作,因为当您计算图标时,您最终会得到 0 或 1,这是您选择的名称。要更改它以便您可以选择“0”或“> 1”,您需要添加一些额外的逻辑。替换:

var icon = customIcons[totalfinds] || {};

与:

var icon = {};
if (totalFinds == 0) {
  icon = customIcons[0];
} else if (totalFinds >= 1) {
  icon = customIcons[1];     
}

此逻辑检查 totalFinds 的值,然后使用它使用您提供的名称(在本例中为“0”或“1”)查找 customIcons 中的图标之一。

【讨论】:

  • 非常感谢您。您的解决方案很有效。再次真诚的感谢和亲切的问候。克里斯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多