0

자동 채우기 검색 기능이 내지도에서 훌륭하게 작동하며 검색된 주소로 확대하여 맞춤 핀을 중앙에 배치하지만 핀은 모든 확대/축소 수준에서 그대로 유지됩니다. 내 목표는 사용자가 이전 레벨 18 확대/축소를 축소 할 때 핀을 제거/숨기기로하는 것입니다. 내 생각 엔 'zoom_changed'가 포함 된 google.maps.event.addListener가 작동 할 수 있지만이 코드 내에 위치 또는 배치 방법을 모릅니다. 사전에 도움을 주셔서 감사합니다.축소 할 때 Google지도 검색 아이콘을 제거/숨기려면?

// Create the search box and link it to the UI element. 
    var input = document.getElementById('pac-input'); 
    var searchBox = new google.maps.places.SearchBox(input); 
    map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 

    // Bias the SearchBox results towards current map's viewport. 
    map.addListener('bounds_changed', function() { 
     searchBox.setBounds(map.getBounds()); 
    }); 

    var markersS = []; 
    // Listen for the event fired when the user selects a prediction and   
    // retrieve more details for that place. 
    searchBox.addListener('places_changed', function() { 
     var places = searchBox.getPlaces(); 

     if (places.length == 0) { 
     return; 
     } 

     // Clear out the old markersS. 
     markersS.forEach(function(marker) { 
     marker.setMap(null); 
     }); 
     markersS = []; 

     // For each place, get the icon, name and location. 
     var bounds = new google.maps.LatLngBounds(); 
     places.forEach(function(place) { 
     if (!place.geometry) { 
      console.log("Returned place contains no geometry"); 
      return; 
     } 
     var icon = { 
      url: '.../HOME.png', 
      anchor: new google.maps.Point(41.5, 64), 
     }; 

     // Create a marker for each place and also set Zoom Condition. 
     google.maps.event.addListener(map, 'zoom_changed', function() { 
     var zoomS = map.getZoom(); 
     if (zoomS>=18) { 
      markersS.push(new google.maps.Marker({ 
      map: map, 
      icon: icon, 
      title: place.name, 
      position: place.geometry.location, 
      //animation: google.maps.Animation.DROP 
      })); 
      } 
     else if (zoomS<18) { 
      markersS.forEach(function(marker) { 
      marker.setMap(null); 
      }); 
      markersS = []; 
      } 
     }); 

     if (place.geometry.viewport) { 
      // Only geocodes have viewport. 
      bounds.union(place.geometry.viewport); 
     } else { 
      bounds.extend(place.geometry.location); 
     } 
     }); 
     map.fitBounds(bounds); 

    }); 
+0

이제는 IF가 추가 된 경우 모든 기능이 향상되었습니다. 그러나 새 주소를 검색 할 때 집 아이콘이 새 지점을 표시하지만 이전 검색된 홈 아이콘이 여전히 남아있어 두 개의 아이콘이 표시됩니다. 계속됩니다. 이전 검색 아이콘을 제거하고 새/현재 코드 만로드하는 코드에 추가 할 수있는 것이 있습니까? – ckingchris

답변

-1

확대/축소 기능은 initMap 기능에 있습니다. 조건문 만 사용하면됩니다.

+0

그냥 알아 냈어. if, else if 함수를 추가하고 아래 코드로 작업 했으므로 작동했습니다! markersS.push (새 google.maps.Marker ({ 지도 :지도, 아이콘 : 아이콘, 제목 : place.name, 위치 : place.geometry.location, 애니메이션 : google.maps.Animation.DROP })); – ckingchris

+0

당신은 그것을 가지고 있습니다. :) – tanwill

+0

트윌 감사! 나는 위의 코드를 업데이트했다. 그러나 새로운 문제가 발생했습니다. 새 주소를 검색하면 이전 아이콘이 여전히 남아 있습니다. 새 주소를 검색 할 때 완전히 제거하지 않는 단계가 있습니까? – ckingchris