2012-07-26 2 views
3

토글 표시로 내지도를 설정하면 사용자가지도 아래에서 일련의 확인란을 선택/선택 취소 할 때 표시된 표시의 카테고리가 선택되어 있으므로 4 개의 체크 박스 중 3 개의 체크 박스가 체크 된 경우 : 즉, 바, 학교, resturaunt, 이들은 표시되는 카테고리별로 마커이며, 누군가 네 번째 마커 또는 그 숫자를 체크하지 않으면 "감각적으로"보이지 않게됩니다. 일하고, ive는 도처에 보였고 couldnt는 도움이되는 어떤 추천이라도 발견한다. 나는 자바 스크립트에 익숙하지 않고 PHP에 능숙합니다. 나는 위치 [] 배열을 4 열로 제한하고 무한하게 설정합니다. 그래서 "장소 유형"을 얻으려면 그 위치 [i] [4] ... 며칠 동안이 자리에 있었고 나는 더 나은 곳을 얻지 못했습니다. ive는 내가 생각할 수있는 모든 가능한 조합을 시도했다. 내가 말했듯이. 나는 PHP 스크립트입니다. 어떤 도움이 많이Google지도 표시 사용/사용 안함

<script type="text/javascript"> 
//PHP - Lat,Lng ARRAY 
var locations = [ 
<?php 
$x = 0; $i = 0; $j = 0; $y = 0; $z = 0; $a = 0; $b = 0; $c = 0; 
for($aa = 0; $aa < $count; $aa++) { 
$content = '<div class="coupon"><div class="ribbon"><div class="ribbon-stitches-top"></div><strong class="ribbon-content"><h1>'.$deal[$y].'</h1></strong><div class="ribbon-stitches-bottom"></div></div><div class="picture_coupon"><img src="'.$deal_photo[$b].'" width="150" height="100" /></div><div class="deal"><center><h1>'.$deal[$y].'</h1>'.$deal_info[$a].'<b>Expires: '.$deal_expiration[$c].'</b></center></div></div>'; 

echo "['" . $business_name[$x] . "'," . $lat[$i] . "," . $lng[$j] . "," . "'$content'" . ",".$type[$id]. "],"; 
$x++; $i++; $j++; $id++; $y++; $z++; $a++; $b++; $c++; 
} 
?> 
['' , , ,'' , ''] 
]; 
//PHP - Lat,Lng ARRAY 
    var map; 

    function initialize() { 
    var myOptions = { 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById('map_canvas'), 
     myOptions); 

    // Try HTML5 geolocation 
    if(navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 

// INVERSE 코드 PHP DYNAMIC

을 appriciated됩니다
var infowindow = new google.maps.InfoWindow(); 

var marker, i; 


//Marker Icon Generation.. Will be changed WHEN make new colors 
var blue = '../images/map-icons/blue.png'; 

for (i = 0; i < locations.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    icon: blue // iconType[$num] 
    }); 

    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(locations[i][3]); 
     infowindow.open(map, marker); 
    } 
    })(marker, i)); 
} 

// INVERSE 코드 PHP DYNAMIC // 지리적 위치의 SET 센터 및 오류 처리

 map.setCenter(pos); 
     }, function() { 
     handleNoGeolocation(true); 
     }); 
    } else { 
     // Browser doesn't support Geolocation 
     handleNoGeolocation(false); 
    } 
    } 

    function handleNoGeolocation(errorFlag) { 
    if (errorFlag) { 
     var content = 'Error: The Geolocation service failed.'; 
    } else { 
     var content = 'Error: Your browser doesn\'t support geolocation.'; 
    } 

// 지리적 위치 설정 센터 및 오류 처리

} 

    google.maps.event.addDomListener(window, 'load', initialize); 

// ================= ATTEMPT 마커 선택란

// == 특정 카테고리의 마커를 나타내고, 체크 박스가 체크되어 있도록 토글 AT = =

function show(category) { 

    for (var i=0; i<locations.length; i++) { 

     if (locations[i].mycategory == category) { 

     locations[i].setVisible(true); 

     } 

    } 

    // == check the checkbox == 

    document.getElementById(category+"box").checked = true; 

    } 



    // == hides all markers of a particular category, and ensures the checkbox is cleared == 

    function hide(category) { 

    for (var i=0; i<locations.length; i++) { 

     if (locations[i].mycategory == category) { 

     locations[i].setVisible(false); 

     } 

    } 

    // == clear the checkbox == 

    document.getElementById(category+"box").checked = false; 

    // == close the info window, in case its open on a marker that we just hid 

    infowindow.close(); 

    } 



    // == a checkbox has been clicked == 

    function boxclick(box,category) { 

    if (box.checked) { 

     show(category); 

    } else { 

     hide(category); 

    } 

    // == rebuild the side bar 

    makeSidebar(); 

    } 
/*HTML*/<input type ="checkbox" name="resturauntbox" onclick="boxclick(this,'resturaunt')"><label></label> 
    <input type ="checkbox" name="barbox" onclick="boxclick(this,'bar')"><label></label> 

// ======================================== ==== CHECKBOX // HTML

답변

2

나는 모든 카테고리를 잡기 위해 하나의 변수와 하나의 변수를 켜고 다른 변수를 숨기려면 하나의 PHP 루프를 설정했다.

function checkAll(field) 
{ 
for (j = 0; j < field.length; j++) { 
    field[j].checked = true; 

} 

    for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category =""; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(true); 
        } 
       } 
      }} 
function uncheckAll(field) 
{ 

for (j = 0; j < field.length; j++) { 
    field[j].checked = false; 

} 

    for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="American"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Asian"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Deli - Cafe"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Ethnic"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Italian"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Mexican"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Seafood"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }for(var thisisgay =0; thisisgay < 1; thisisgay++) {category ="Sushi"; 
       for (var i=0; i<locations.length; i++) { 
        if (locations[i][4]) { 
         markers[i].setVisible(false); 
        } 
       } 
      }  

} 내 표현 필자에 대한

1

불쾌감은 없지만 매우 혼란스러운 질문입니다. 그러나 제목을 그냥 벗어나면 마커를 추가하고 제거하는 것이 좋습니다. 마커를 추가하려면 다음 사용할 수 있습니다 : 당신이지도에서 마커를 제거 할 때,

var marker = new google.maps.Marker({ 
    position: map.getCenter(), // center marker in map 
    map: map, 
    shadow: shadow, // MarkerImage type 
    icon: image // MarkerImage type 
}); 

을, 당신은이를 사용할 수 있습니다

marker.setMap(null); 

따라서하는 기능을 만들 수 있습니다 이런 식으로 ON과 OFF 마커를 전환 :

function toggleMarker(marker, map) { 
    if (marker.getMap() == null) 
     marker.setMap(map); // marker isn't visible on map, so make it visible 
    else 
     marker.setMap(null); // marker is visible on map, so make it invisible 
} 

을이 당신이 원하는 미안 해요 무엇을하지 않은 경우. 나는 당신의 질문을 이해하기가 어려웠다.

+0

메신저 매우 유감 오늘에 밤을이었다. 스크립트는 마커를 생성하고 정보 창에 내용을 입력하는 작업을합니다. 그러나 사람들이지도 아래에있는 특정 범주의 확인란을 클릭하면 그렇게하고 싶습니다. 해당 마커의 카테고리 유형이 나타납니다/dissaper. 사람들이 원하는 마커 유형을 선택하고 선택할 수있게 해줍니다. 예 : resturaunts, bar, schools, etc :) 답변 해 주셔서 감사합니다. 하지만 다시 자바 스크립트와 잘 안 그래서 정확히 무슨 코드가 있는지 모르겠다. 또는 체크 상자에 묶는 방법 –

+0

나는 조언을 너무 많이한다! 그리고 나의 말씨를 바꿨다 !!! 당신의 응답을 주셔서 감사합니다!!!그것의 많은 appriciated, unfortunatly 당신이 제안한 대답은 내가 찾고있는 대답은 아니지만, 당신은 매우 도움이되었습니다. –

+0

메신저는 이미 생성 된지도 마커를 전환하는 방법입니다. 카테고리 별 온/오프는 체크 박스의 –