2016-02-14 217 views
0

不要任何人有想法如何我可以通過多種類型的types在谷歌地圖pnearby地方搜索谷歌地圖附近的地方

var map; 
var infowindow; 

function initMap() { 
    var pyrmont = {lat: -33.867, lng: 151.195}; 

    map = new google.maps.Map(document.getElementById('map'), { 
    center: pyrmont, 
    zoom: 15 
    }); 

    infowindow = new google.maps.InfoWindow(); 

    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch({ 
    location: pyrmont, 
    radius: 500, 
    types: ['store'] 
    }, callback); 
} 

function callback(results, status) { 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
    for (var i = 0; i < results.length; i++) { 
     createMarker(results[i]); 
    } 
    } 
} 

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: place.geometry.location 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(place.name); 
    infowindow.open(map, this); 
    }); 
} 

我試着寫在許多語法如下類型,但它顯示錯誤的地方。

types: 'bank|bar|airport' 
types: ['bank','bar'] 
types: ['bank'|'bar'] 

做任何人有更好的解決辦法,我會升值。

+0

你所說的 「顯示錯誤的地方」 呢?根據文檔,您使用的第一種語法應該是正確的。 –

+0

是的,我同意所以,我也認爲相同,但是當我使用第一語法,它顯示我酒店也和水族館,但沒有銀行,所以我增加了半徑以獲得更好的結果,但它不顯示任何銀行 – Lakshya

回答

0

您錯過了必需屬性query。這爲API提供了搜索關鍵字,例如商家名稱。這些類型提供額外的過濾器來提供它認爲與您的請求最相關的信息。

此方法採用具有以下字段的請求:

  • 查詢(所需),其上進行搜索,例如,該文本串: 「餐館」。商家信息服務會根據此字符串返回基於 的候選匹配項,並根據他們感知的 相關性對結果進行排序。
  • 類型 - 包含Google Places API中支持的一種或多種支持類型的數組:支持的地方類型列表。該服務將返回匹配任何指定類型的 結果。

var map; 
 
var infowindow; 
 

 
function initMap() { 
 
    var timesSquare = { 
 
    lat: 40.759011, 
 
    lng: -73.984472 
 
    }; 
 

 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    center: timesSquare, 
 
    zoom: 18 
 
    }); 
 

 
    infowindow = new google.maps.InfoWindow(); 
 

 
    var service = new google.maps.places.PlacesService(map); 
 
    service.nearbySearch({ 
 
    location: timesSquare, 
 
    radius: 50, 
 
    query: 'new york', 
 
    types: ['bank'|'bar'] 
 
    }, callback); 
 
} 
 

 
function callback(results, status) { 
 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
 
    console.log(results); 
 
    for (var i = 0; i < results.length; i++) { 
 
     
 
     createMarker(results[i]); 
 
    } 
 
    } 
 
} 
 

 
function createMarker(place) { 
 
    var placeLoc = place.geometry.location; 
 
    var marker = new google.maps.Marker({ 
 
    map: map, 
 
    position: place.geometry.location 
 
    }); 
 

 
    google.maps.event.addListener(marker, 'click', function() { 
 
    infowindow.setContent(place.name); 
 
    infowindow.open(map, this); 
 
    }); 
 
}
#map { 
 
    min-width: 100%; 
 
    height: 400px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://maps.googleapis.com/maps/api/js?v=3&callback=initMap&libraries=places" async defer> 
 
</script> 
 
<div id="map"></div>

+0

我們如何更改類型,例如我需要(學校,學院等)來顯示。我試圖像這樣改變,(類型:['colleges'|'school'])。如何獲取此數據 – Vijaykarthik

+0

以下是受支持的類型https://developers.google.com/places/supported_types –