2012-12-01 4 views
0

Google지도 API지도 확대는 Google 지역 정보 검색 후에 추가 된 모든 아이콘을 표시하도록 줌합니다. 모바일지도에서로드하는 데 약간 걸릴 수 있으며 자전거 타는 사람을위한이 앱에서는 뷰포트 내에 결과 만 표시하는 것을 선호합니다. 필자가 읽은 대부분의 연구는 뷰 포트 내에서만 결과를 반환 할 수 없음을 나타냅니다. 마커가 추가 된 후 맵 경계가 변경되지 않도록 할 수 있습니까? 마커가 하나만 반환되지 않는 한 현재 경계에 추가 된 마커를 표시하면 그 마커로 확대해야합니다. 따라서 피자와 같은 일반적인 것을 검색하면 패닝 또는 확대/축소없이 현재 뷰포트에 많은 피자 장소가 표시됩니다. 특정 주소를 검색하면 뷰포트 외부에 있어도 해당 마커로 확대/축소됩니다. 귀하의 질문에bounds google maps

var input = document.getElementById('target'); 
var searchBox = new google.maps.places.SearchBox(input); 
var bounds = map.getBounds(); 
searchBox.setBounds(bounds); 
var markers = []; 
service = new google.maps.places.PlacesService(map); 

google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 
    // alert("getPlaces returns "+places.length+" places"); 

    for (var i = 0; i < gmarkers.length; i++) { 
     gmarkers[i].setMap(null); 
    } 

    gmarkers = []; 
    var bounds = new google.maps.LatLngBounds(); 

    for (var i = 0, place; place = places[i]; i++) { 
     var place = places[i]; 
     createMarker(place); 
     bounds.extend(place.geometry.location); 
    } 
    map.fitBounds(bounds); 
    // if (markers.length == 1) map.setZoom(17); 
    }); 

    google.maps.event.addListener(map, 'bounds_changed', function() { 
    var bounds = map.getBounds(); 
    searchBox.setBounds(bounds); 
    }); 

    ib = new InfoBox({}); 
+0

구현하기가 쉽습니다. 무슨 문제가있어? 반환 된 모든 마커를 표시하도록 코드가 현재 작성되었습니다. – geocodezip

+0

내 주요 문제는 이것이 내 첫 번째 프로젝트이며 아직 배우는 중입니다. 코드 문제에 관한 한, bounds.extend (place.geometry.location); 내 빈 경계 변수를 가져 와서 모든 마커를 표시하는 위도와 경도를 지정합니다. 그런 다음 map.fitBounds (bounds)는 실제로 해당 경계를 사용하여지도의 크기를 조정하여 모든 마커를 표시합니다. 나는 map.fitBounds를 주석 처리 해 보았습니다.지도가 움직이지는 않지만 항상지도를 유지하는 것처럼 보입니다. 또한 if 문은 추가 된 마커가 현재 경계 외부에있는 경우에만 줌합니다. – Rick

답변

1

답 :

  • 을 수 나를 그냥 마커가 추가 된 후에 변경하는지도 경계를 유지하기 위해?

입니다. 그리고 말했듯이 map.fitBounds를 제거해야합니다.

지도를 중앙에 놓고 하나의 주소를 확대하려면 지오 코더를 사용하거나 (별도로 구현) 결과의 수를 확인하십시오. 결과가 1 인 경우지도를 결과의 중심에 놓고 결과에 제안 된 뷰포트는 map [center.fitBounds (place.geometry.viewport)로 생각]을 중심으로 확대/축소하는 데 사용합니다.

+0

marker.length == 1이면 map.fitBounds 및 뷰포트를 변경하는 함수를 제거해 보았습니다. 일부 검색에서는 작동하지만지도 경계는 여전히 일부 시간을 변경합니다. googles 검색 창 API가지도 뷰포트를 보존하려는 제 노력을 다한 것 같습니다. – Rick

+0

코드는지도를 가운데 맞춤 및 확대/축소합니다. 문제가있는 코드를 게시하십시오 (jsfiddle이 아마도 가장 좋을 것입니다). – geocodezip