2016-09-01 7 views
0

近くの結果を指定したカテゴリに制限するマップを表示したいとします。ユーザーが独自の検索を完了できるようにするコードがありますが、検索が無効になり、カテゴリが事前定義されるように変更したいと考えています。出典:http://www.gurchet-rai.net/apps/places/Googleマップの実装で定義された場所の種類に結果を限定する

$(document).ready(function(){ 
    var loc; 
    var map; 
    var service; 
    var infoWindow; 
    var overlays = []; 
    var resultList = []; 
    var isMobile = $(window).width < 767; 

    try {   
     if (typeof navigator.geolocation !== 'undefined') {  
      navigator.geolocation.getCurrentPosition (
       function(position) {  
        var coords = position.coords; 

        loc = new google.maps.LatLng(coords.latitude, coords.longitude); 
        map = new google.maps.Map(document.getElementById("map_canvas"), { 
         mapTypeId: google.maps.MapTypeId.ROADMAP, 
         mapTypeControl: false, 
         center: loc, 
         zoom: 13 
        }); 

        service = new google.maps.places.PlacesService(map);       
        infoWindow = new google.maps.InfoWindow();    
       },  
       function(error) { 
        if (error.code == 1) {    
         $('#location-details').append('Please enable location tracking in your web browser'); 
        } else if (error.code == 2) { 
         $('#location-details').append('Unable to determine location - please ensure location tracking is enabled in your browser');   

        } else { 
         $('#location-details').append('Unable to determine location'); 
        } 
       }, 
       {enableHighAccuracy: true} 
      ); 
     } else { 
      $('#location-details').append('Your browser does not support location tracking'); 
     } 
    } catch (e) { 
     alert('An error has occured'); 
    } 

    function plotResultList(){ 
     var iterator = 0;     
     for(var i = 0; i < resultList.length; i++){ 
      setTimeout(function(){ 
       var lat = resultList[iterator].geometry.location.Za; 
       var lng = resultList[iterator].geometry.location.Ya; 
       var name = resultList[iterator].name; 
       var addr = resultList[iterator].formatted_address; 
       var reference = resultList[iterator].reference; 

     var marker = new google.maps.Marker({ 
        position: resultList[iterator].geometry.location, 
        map: map, 
        title: name, 
        animation: isMobile? 'undefined' : google.maps.Animation.DROP 
       }); 
       overlays.push(marker); 

       google.maps.event.addListener(marker, 'click', function() { 
        infoWindow.close(); 
        var request = { 
         reference: reference 
        }; 

        service.getDetails(request, function(place, status){ 
         var content = "<h6>" + name + "</h6>"; 
         if(status == google.maps.places.PlacesServiceStatus.OK){  
          if(typeof place.rating !== 'undefined'){ 
           var badgeType = ''; 
           if (place.rating < 2){ 
            badgeType = 'badge-important'; 
           } else if (place.rating >= 2 && place.rating <= 3){ 
            badgeType = 'badge-warning'; 
           } else { 
            badgeType = 'badge-success'; 
           } 
           content += "<p><small>Rating: <span class='badge " + badgeType + "'>" + place.rating + "</span></small></p>"; 
          }  

          if(typeof place.formatted_address !== 'undefined'){ 
           content += "<br><small>" + place.formatted_address + "</small>"; 
          } 

          if(typeof place.formatted_phone_number !== 'undefined'){ 
           content += "<br><small><a href='tel:" + place.formatted_phone_number + "'>" + place.formatted_phone_number + "</a></small>";         
          } 

          if(typeof place.website !== 'undefined'){ 
           content += "<br><small><a href='" + place.website + "'>website</a></small>"; 

          } 
         }        

         infoWindow.setContent(content); 
         infoWindow.open(map, marker);   
        }); 
       }); 
       iterator++; 
      }, isMobile? 0: (i * 75)); 
     } 
    } 

    $('#search').submit(function(e){ 
     e.preventDefault(); 

     var query = $('#query').val(); 
     var request = { 
      location: map.getCenter(), 
      radius: '5000', 
      query: query    
     }; 

     service.textSearch(request, function(results, status, pagination){ 
      for(var i = 0; i < overlays.length; i++){     
       overlays[i].setMap(null); 
      } 
      resultList.length = 0; 
      overlays.length = 0; 
      if (status == google.maps.places.PlacesServiceStatus.OK) { 
       resultList = resultList.concat(results); 
       plotResultList(); 
      } 
     }); 
    }); 
}); 

答えて

0

は、具体的typesパラメータで、Maps Javascript API上を見てみましょう。 Hereには許可されたタイプが記述されています。

あなたrequestはなります、あなたは、ユーザーの検索に基づいて空港を表示したいとしましょう:答えとしてそれらを共有してください

var request = { 
    location: map.getCenter(), 
    radius: '5000', 
    query: query, 
    types: ['airport'] 
}; 
+0

は、参照としてリンクします。 – Sachith

+0

質問を投稿する前に両方のページを調べましたが、この文脈での実装を理解していません。私はユーザが検索して定義されたパラメータを結果@CésarCostaに渡すことを排除する必要があります。 – Shane08

+0

@ Shane08正確に何が欲しいのか分かりませんでした。あなたの 'request'変数に' type'プロパティを追加し、タイプ文字列を渡しても、あなたがしたいことは解決しないでしょうか? –

関連する問題