การค้นหาข้อความ (ใหม่) (original) (raw)

การค้นหาข้อความ (ใหม่) จะรับข้อความค้นหาและแสดงรายการสถานที่ที่ตรงกัน

การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านรองเท้าใกล้กับออตตาวา" หรือ "ถนนใหญ่ 123" บริการจะแสดงรายการสถานที่ที่ตรงกับสตริงข้อความและค่ากำหนดตำแหน่งที่ตั้งที่ตั้งไว้ การค้นหาข้อความ (ใหม่) ช่วยให้คุณค้นหาสถานที่ตามประเภท กรองโดยใช้เกณฑ์ เช่น เวลาทําการและคะแนน และจํากัดหรือปรับผลการค้นหาให้เหมาะกับสถานที่หนึ่งๆ ได้

หากต้องการใช้การค้นหาข้อความ (ใหม่) คุณต้องเปิดใช้ "Places API (ใหม่)" ในโปรเจ็กต์ Google Cloud ดูรายละเอียดได้ที่เริ่มต้นใช้งาน

ค้นหาสถานที่ตามข้อความค้นหา

เรียกใช้ searchByText เพื่อแสดงรายการสถานที่จากการค้นหาด้วยข้อความหรือหมายเลขโทรศัพท์ ระบุพารามิเตอร์การค้นหาโดยใช้คําขอ แล้วเรียกใช้ searchByText() ระบบจะแสดงผลลัพธ์เป็นรายการออบเจ็กต์ Place ซึ่งคุณดูรายละเอียดสถานที่ได้จากออบเจ็กต์เหล่านี้ ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคําขอและการเรียกใช้ searchByText

TypeScript

const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, };

//@ts-ignore const { places } = await Place.searchByText(request);

JavaScript

const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request);

ดูรายการที่พักทั้งหมด

หากการค้นหามีหมายเลขโทรศัพท์ คุณควรตั้งค่าพารามิเตอร์ภูมิภาค เช่น หากคุณใช้หมายเลขโทรศัพท์เพื่อค้นหาสถานที่ในญี่ปุ่น และโดเมนที่ขอคือ jp คุณต้องตั้งค่าพารามิเตอร์ region เป็น "jp" หากละ region ไว้ในคำขอ ระบบจะกำหนดค่าเริ่มต้นของ API เป็นภูมิภาคสหรัฐอเมริกา ('us')

ระบบจะแสดงผลลัพธ์เป็นรายการออบเจ็กต์ Place ซึ่งคุณใช้ดูรายละเอียดสถานที่ได้

ตัวอย่าง

ตัวอย่างต่อไปนี้ใช้ searchByText เพื่อค้นหาร้านอาหารทาโก้ในบริเวณใกล้เคียงของ Mountain View และแสดงแผนที่พร้อมเครื่องหมายเพื่อแสดงผลลัพธ์

TypeScript

let map; let center;

async function initMap() { const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary;

center = { lat: 37.4161493, lng: -122.0812166 };
map = new Map(document.getElementById('map') as HTMLElement, {
    center: center,
    zoom: 11,
    mapId: 'DEMO_MAP_ID',
});

findPlaces();

}

async function findPlaces() { const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, };

//@ts-ignore
const { places } = await Place.searchByText(request);

if (places.length) {
    console.log(places);

    const { LatLngBounds } = await google.maps.importLibrary("core") as google.maps.CoreLibrary;
    const bounds = new LatLngBounds();

    // Loop through and get all the results.
    places.forEach((place) => {
        const markerView = new AdvancedMarkerElement({
            map,
            position: place.location,
            title: place.displayName,
        });

        bounds.extend(place.location as google.maps.LatLng);
        console.log(place);
    });

    map.fitBounds(bounds);

} else {
    console.log('No results');
}

}

initMap();

JavaScript

let map; let center; async function initMap() { const { Map } = await google.maps.importLibrary("maps"); center = { lat: 37.4161493, lng: -122.0812166 }; map = new Map(document.getElementById('map'), { center: center, zoom: 11, mapId: 'DEMO_MAP_ID', }); findPlaces(); } async function findPlaces() { const { Place } = await google.maps.importLibrary("places"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request); if (places.length) { console.log(places); const { LatLngBounds } = await google.maps.importLibrary("core"); const bounds = new LatLngBounds(); // Loop through and get all the results. places.forEach((place) => { const markerView = new AdvancedMarkerElement({ map, position: place.location, title: place.displayName, }); bounds.extend(place.location); console.log(place); }); map.fitBounds(bounds); } else { console.log('No results'); } } initMap();

CSS

/*

#map { height: 100%; }

/*

HTML

Text Search
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<!-- prettier-ignore -->
<script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
    ({key: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8", v: "weekly"});</script>

ลองใช้ตัวอย่าง