【发布时间】:2014-08-30 10:11:39
【问题描述】:
我试图在我的地图上保持一组不变的示例标记以便于查看。在平移和缩放期间,我使用从数据库中随机选择的标记填充我的地图,直到达到一定数量。主要问题是用新的界内标记替换掉界外的标记。
除了缩小之外,下面的代码运行良好。
当我缩小时,我想用一组新的随机标记重复刷新地图,最多达到一定数量并均匀分布在地图上。问题是有一个 zoom_changed 事件,但它似乎无法区分进出。
有什么建议吗?
google.maps.event.addListener(map, 'idle', function() { bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var north = northEast.lat(); var south = southWest.lat(); var west = southWest.lng(); var east = northEast.lat(); var marnum = 20; $.post('pzparsers/pzparsers.php', {north:north, south:south, west:west, east:east, marnum:marnum}, function(response){ eval(response); bounds = map.getBounds(); if(oldmarkers.length == 0 && newmarkers.length !== 0){ //b = $.extend( true, {}, a ); for (var i = 0; i < newmarkers.length; i++) { oldmarkers[i] = newmarkers[i]; oldmarkers[i].setMap(map); } } else if (oldmarkers.length !== 0 && newmarkers.length !== 0){ for (var i = 0; i < oldmarkers.length; i++){ if(!bounds.contains(oldmarkers[i].getPosition())){ oldmarkers[i].setMap(null); oldmarkers[i] = newmarkers[i]; oldmarkers[i].setMap(map); } } } }); });
php:-
$output .= "newmarkers.length = 0;\n"; if($mrk_cnt > 0){ for ($lcnt = 0; $lcnt < $mrk_cnt; $lcnt++){ $output .= "var point = new google.maps.LatLng($lat[$lcnt], $lng[$lcnt]);\n"; $output .= "var mrktx = \"$inf[$lcnt]\";\n"; $output .= "var infowindow = new google.maps.InfoWindow({ content: mrktx });\n"; $output .= "var marker = new google.maps.Marker({position: point, icon: $icon[$lcnt], title: '$inf[$lcnt] $begin[$lcnt] - $end[$lcnt]'});\n"; $output .= "google.maps.event.addListener(marker,'click', function() {infowindow.open(map,marker);});\n"; //$output .= "marker.setMap(map);\n"; $output .= "newmarkers.push(marker);\n"; } }
【问题讨论】:
-
zoom_changed事件:使用map.getZoom()可以获得当前缩放值的信息,并与之前保存的值进行比较。 -
谢谢,我会继续努力的。
标签: javascript google-maps zooming google-maps-markers