Googleオートコンプリートプレースのjavascriptを使用して検索ボックスの推奨結果を返しています。入力した文字に関連する都市と国のみを表示するだけですが、必要な一般的なプレースの結果はgoogle apiに表示されます。結果を都市と国のみを表示するように制限します。
次の例を使用しています。
<html>
<head>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 14px;
}
</style>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
</div>
</body>
</html>
<html>
<head>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 14px;
}
</style>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var options = {
types: ['geocode'] //this should work !
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
</div>
</body>
</html>
var options = {
types: ['geocode'] //this should work !
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
他のタイプへの参照: http://code.google.com/apis/maps/documentation/places/supported_types.html#table2
これを試して
<html>
<head>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 14px;
}
</style>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places®ion=in" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
</div>
</body>
</html>
http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places "type =" text/javascript "
これを次のように変更してください。 "region = in"(in = india)
" http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places®ion=in " type = "text/javascript"
Francoisが answer を指定すると、その国のすべての都市がリストされます。ただし、ある国のすべての地域(都市+州+その他の地域など)またはその国の事業所を一覧表示することが要件である場合は、種類を変更して結果を適切にフィルタリングできます。
国内の都市のみを一覧表示します
var options = {
types: ['(cities)'],
componentRestrictions: {country: "us"}
};
国のすべての都市、州、地域を一覧表示します
var options = {
types: ['(regions)'],
componentRestrictions: {country: "us"}
};
国内のレストラン、店舗、オフィスなど、すべての事業所を一覧表示します
var options = {
types: ['establishment'],
componentRestrictions: {country: "us"}
};
利用可能な詳細情報とオプション
https://developers.google.com/maps/documentation/javascript/places-autocomplete
これが誰かに役立つことを願っています
私はGoogleオートコンプリートAPIを少し試してきましたが、結果を国だけに限定するために私が見つけることができる最良の解決策は次のとおりです。
var autocomplete = new google.maps.places.Autocomplete(input, options);
var result = autocomplete.getPlace();
console.log(result); // take a look at this result object
console.log(result.address_components); // a result has multiple address components
for(var i = 0; i < result.address_components.length; i += 1) {
var addressObj = result.address_components[i];
for(var j = 0; j < addressObj.types.length; j += 1) {
if (addressObj.types[j] === 'country') {
console.log(addressObj.types[j]); // confirm that this is 'country'
console.log(addressObj.long_name); // confirm that this is the country name
}
}
}
返された結果オブジェクトを見ると、住所のさまざまな部分を表す複数のオブジェクトを含むaddress_components配列があります。これらの各オブジェクト内には 'types'配列が含まれ、この 'types'配列内には住所に関連付けられたさまざまなラベルが表示されます。
基本的に受け入れられた答えと同じですが、新しいタイプと複数の国の制限で更新されました:
function initialize() {
var options = {
types: ['(regions)'],
componentRestrictions: {country: ["us", "de"]}
};
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
'(regions)'
の代わりに'(cities)'
を使用すると、都市名だけでなく郵便番号でも検索できます。
公式文書の表3を参照してください。 https://developers.google.com/places/supported_types
また、あなたの国の制限により、地図をズームして中央に配置する必要があります。
ズームと中心のパラメータを使うだけ! ;)
function initialize() {
var myOptions = {
zoom: countries['us'].zoom,
center: countries['us'].center,
mapTypeControl: false,
panControl: false,
zoomControl: false,
streetViewControl: false
};
... all other code ...
}
自分で解決策を見つけた
var acService = new google.maps.places.AutocompleteService();
var autocompleteItems = [];
acService.getPlacePredictions({
types: ['(regions)']
}, function(predictions) {
predictions.forEach(function(prediction) {
if (prediction.types.some(function(x) {
return x === "country" || x === "administrative_area1" || x === "locality";
})) {
if (prediction.terms.length < 3) {
autocompleteItems.Push(prediction);
}
}
});
});
このソリューションは都市と国のみを表示します。
<html>
<head>
<title>Example Using Google Complete API</title>
</head>
<body>
<form>
<input id="geocomplete" type="text" placeholder="Type an address/location"/>
</form>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://ubilabs.github.io/geocomplete/jquery.geocomplete.js"></script>
<script>
$(function(){
$("#geocomplete").geocomplete();
});
</script>
</body>
</html>
詳しくは このリンク をご覧ください。