این صفحه جزئیات مشخصات فنی فید «نقطه موردعلاقه» (POI) را نشان میدهد. این سند شامل خلاصهای از فیلدهای الزامی، تعاریف جامع طرحواره، و نمونه JSON برای راهنمایی در پیادهسازی است.
مشخصات فید
این بخش الزامات و تعاریف فید نقطه موردعلاقه را شرح میدهد.
الزامات فیلد
| نام فیلد | الزام | شرح |
|---|---|---|
| poi_id | الزامی | رشتهای که توسط شریک تولید شده است و مکان جالب (دارایی) را شناسایی میکند. |
| نام | الزامی | نام نقطه موردعلاقه. این نام بهعنوان نام نمایشی دارایی در «واحد تجمیعکننده» استفاده خواهد شد. |
| تلفن | خوب است داشته باشید | شماره تلفن تماس نقطه موردعلاقه شامل کد کشور و پیششماره شهری، برای مثال +۱۴۵۶۷۸۹۱۲۳۴. |
| نشانی وب | خوب است داشته باشید | نشانی وب وبسایت عمومی نقطه موردعلاقه. توجه: این فقط برای اهداف مطابقت استفاده میشود، نه برای نمایش. |
| مکان | الزامی (نشانی) اختیاری (طول/عرض جغرافیایی) |
مکان نقطه موردعلاقه. الزامی: نشانی و فیلدهای همراه برای مطابقت صحیح با ملک الزامی است. اختیاری: طول و عرض جغرافیایی. اگر ارائه شود، Google از طول/عرض جغرافیایی در نمایش سنجاقهای ملک در نقشه «واحد تجمیعکننده» شما استفاده خواهد کرد. |
| تصاویر | الزامی (یک تصویر) خوب است که داشته باشید (چند تصویر) |
تصاویر نقطه موردعلاقه. تصاویر در نمایش داراییها مهم خواهند بود. توصیه میکنیم حداقل ۱ تصویر اضافه کنید. میتوانید چند تصویر (حداکثر ۵ تصویر) ارائه دهید. وقتی چند تصویر ارائه شود، از آنها بهترتیبی که ارائه شدهاند استفاده خواهد شد (درصورتیکه تصویری قابلاستفاده نباشد). تصاویر بازبینی خواهند شد تا اطمینان حاصل شود که خطمشیهای جستجوی ایمن Google را نقض نمیکنند. |
| ردهبندی | توصیهشده | ردهبندی میانگین برای ملک. |
| num_ratings | توصیهشده | تعداد ردهبندیهای مشارکتکننده برای فیلد rating. |
| rating_scale | خوب است داشته باشید | مقیاس ردهبندی استفادهشده برای فیلد rating. اگر حداکثر ردهبندی ۵ باشد، rating_scale برابر با ۵ است. |
| دسته | خوب است داشته باشید | نشاندهنده دسته دارایی است. |
| hotel_data | خوب است داشته باشید | فیلدهای مختص هتل. برای جزئیات، تعریف HotelData را ببینید. |
| hotel_star_class | توصیهشده | مقدار ستاره کلاس رسمی هتل. این مقدار باید عدد صحیحی بین ۰ و ۵ باشد. اگر سیستم شما از مقادیر نیمستاره یا اعشاری استفاده میکند (برای مثال، 3.5)، آن را به عدد صحیح (3) گرد کنید. اگر کلاس ستاره دردسترس، مشخص، یا تعیینشده نیست، لطفاً مقدار ۰ را ارائه دهید. وقتی روی ۰ تنظیم شود، هیچ کلاس ستاره هتلی در واسط کاربر برای کاربران نمایش داده نخواهد شد. |
| brand_ids | خوب است داشته باشید | نمانامهایی که میتوانند این هتل را نمایش دهند. اگر این فیلد خالی باشد، هتل میتواند تحت هریک از نمانامهای مرتبط با فید نمایش داده شود. |
| description | خوب است داشته باشید | شرح مفصل دارایی. |
| display_address | خوب است داشته باشید | نشانی نمایشدادهشده در واسط کاربر. |
دستورالعملهای تصویر
همه تصاویر اضافهشده به فید باید از این رهنمودها پیروی کنند:
- قالب: باید JPEG، PNG، یا WebP باشد.
- حداکثر اندازه فایل: کمتر از ۳۰ مگابایت برای هر تصویر.
- حداکثر ابعاد: کمتر از ۷۵ مگاپیکسل در مجموع (عرض × ارتفاع < ۷۵٬۰۰۰٬۰۰۰).
- نوع نشانی وب: مسیر مستقیم به دارایی تصویری (مثلاً به jpg. ختم میشود).
- اجازهها: مطمئن شوید که سرور میزبان و فایل
robots.txtاجازه دسترسی به نمایندههای کاربرGooglebotوGooglebot-Imageرا میدهند و دایرکتوریهای تصویر را مسدود نمیکنند.
پشتیبانی چندزبانه
فید «مکان جالب» از ارائه محتوای بومیسازیشده برای فیلدهای خاص پشتیبانی میکند. فیلدهای زیر از نوع Text هستند و از بومیسازی پشتیبانی میکنند:
namedescriptiondisplay_address
برای ارائه محتوا به چند زبان، باید default_locale را در فیلد مشخص کنید و رشتههای بومیسازیشده را در فهرست localizations ارائه دهید.
همه بومیسازیهای یک ملک را در یک ورودی «نقطه موردعلاقه» ارائه دهید. یک ویژگی را بین چند فایل JSON زبان تقسیم نکنید.
مثال:
"name": {
"localizations": [
{
"locale": "en",
"text": "Banana Hotel"
},
{
"locale": "es",
"text": "Hotel Plátano"
}
],
"default_locale": "en"
}
دستورالعملهای بستهبندی فایل
برای اطمینان از موفقیتآمیز بودن جذب، الزامات بستهبندی زیر را رعایت کنید:
- بایگانی JSON تجمیعی تکی (الزامی): همه سوابق دارایی را در یک فایل JSON تکی ترکیب کنید. توصیه میکنیم آن را در یک بایگانی GZIP فشرده کنید و سپس بارگذاری کنید.
- هشدار ضدالگو: از یک فایل برای هر ملک یا چند فایل جداشده براساس کشور در یک بایگانی استفاده نکنید. این رویکرد پشتیبانی نمیشود و باعث ناموفق بودن استخراج میشود.
تعاریف
VssPoiFeed Definition
// Represents a Point of Interest (POI) data feed provided by a partner. export message VssPoiFeed { // The POIs in the feed. repeated VssPoi data = 1; }
VssPoi Definition
// Represents a single Point of Interest (POI) entity e.g. a hotel or // restaurant. export message VssPoi { // Required. A string generated by the partner that identifies a POI. string poi_id = 1; // The entity name, telephone, url and location are used to support // matching partner inventory with entities already present on Google. // Required. The name of the POI. Text name = 2; // The contact telephone number of the POI including its country and // area codes, e.g. +14567891234. string telephone = 3 [(datapol.semantic_type) = ST_PHONE_NUMBER]; // The url of the POI's public website. // Note: This will be used just for matching purposes, not for display. string url = 4; // Required. The location of the POI. GeoCoordinates location = 5; // The address displayed on the UI. Text display_address = 17; // Images of the POI. // Max number of images: 5. repeated Image images = 6; // Average rating for the POI. float rating = 12; // The number of contributing ratings for the `rating` field. int64 num_ratings = 13; // The rating scale used for the `rating` field. If max rating is 5, then // rating_scale is 5. int32 rating_scale = 14; // Represents the category of the POI. // It should match the `additional_data` oneof field below. export enum Category { UNKNOWN_CATEGORY = 0; HOTEL = 1; LOCAL = 4; } // Required. Represents the category of the POI. Category category = 9; // A description of the POI. Text description = 16; // Required. Category specific fields. // It should match the `category` field above. oneof additional_data { // Hotel specific fields. HotelData hotel_data = 10; // Local specific fields. LocalData local_data = 15; } }
تعریف نوشتار
// Represents a text with localizations. message Text { // Represents a localized string. message LocalizedString { // The text's language tag, such as "en", "en-US" or "sr-Latn". string locale = 1; // The text in the specified locale. string text = 2; } // The localized strings. repeated LocalizedString localizations = 1; // The locale to use as the default language it must be present in the // localizations. string default_locale = 2; }
تعریف مختصات جغرافیایی
// The Geo data of a location, including latitude, longitude, and address. message GeoCoordinates { option (datapol.msg_semantic_type) = ST_LOCATION; // [-90, +90] degrees (inclusive). // Required if longitude is set, otherwise nice to have. double latitude = 1; // [-180, +180] degrees (inclusive). // Required if latitude is set, otherwise nice to have. double longitude = 2; // Required. Address for a location. oneof addresses { // Postal address of the location. PostalAddress address = 3; } }
تعریف PostalAddress
// The postal address for the location. message PostalAddress { option (datapol.msg_semantic_type) = ST_LOCATION; // Required. The country, using ISO 3166-1 alpha-2 country code, e.g. "US". string country = 1; // Required. The locality/city, e.g. "Mountain View". string locality = 2; // The region/state/province, e.g. "CA". This field is only required in // countries where region is commonly a part of the address. (optional) string region = 3; // Required. The postal code, e.g. "94043". string postal_code = 4; // Required. The street address, e.g. "1600 Amphitheatre Pkwy". string street_address = 5; }
وضوح تصویر
// Represents an image of the Point of Interest (POI). export message Image { // The url of the image. Google will crawl the media hosted at this URL. // Max length: 2000. string url = 1; // The alternative text to be used for accessibility. Text alt_text = 2; }
تعریف HotelData
// Hotel specific feed data. message HotelData { // The official hotel class star value. // Can be used in a label like "5-star hotel." // This value is expected to be an integer between 0 and 5. A rating of 0 // should be used if a rating is unavailable or not specified. When // set to 0, no star class will be displayed on the UI for users. int32 hotel_star_class = 1; // Deprecated. Use `brand_landing_pages` instead. // // The brands that can display this hotel. // If this field is empty, the hotel can be displayed under any of the // brands associated with the feed. repeated string brand_ids = 2 [(datapol.semantic_type) = ST_PARTNER_ID, deprecated = true]; // The brand landing pages. repeated BrandLandingPages brand_landing_pages = 3; }
نمونهها
جارزن نقطه موردعلاقه
نام فایل: poi_1707240000.json
{ "data": [ { "poi_id": "hotel_banana", "name": { "localizations": [ { "locale": "en", "text": "Banana Hotel" } ], "default_locale": "en" }, "telephone": "+16195550100", "url": "https://www.example-banana-hotel.com", "location": { "latitude": 32.7157, "longitude": -117.1611, "address": { "country": "US", "locality": "San Diego", "region": "CA", "postal_code": "92101", "street_address": "2845 W 7th St" } }, "images": [ { "url": "https://www.example.com/banana_hotel.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Banana Hotel Exterior" } ] } } ], "rating": 4.5, "category": "HOTEL", "hotel_data": { "hotel_star_class": 4, "brand_ids": ["brand_a", "brand_b"] } }, { "poi_id": "hotel_kiwi", "name": { "localizations": [ { "locale": "en", "text": "Kiwi Hotel" } ], "default_locale": "en" }, "telephone": "+41445550100", "url": "https://www.example-kiwi-hotel.com", "location": { "latitude": 47.3769, "longitude": 8.5417, "address": { "country": "CH", "locality": "Zurich", "postal_code": "8001", "street_address": "Bahnhofstrasse 10" } }, "images": [ { "url": "https://www.example.com/kiwi_hotel.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Kiwi Hotel Lobby" } ] } } ], "rating": 4.0, "category": "HOTEL", "hotel_data": { "hotel_star_class": 3, "brand_ids": ["brand_c"] } }, { "poi_id": "hotel_croissant", "name": { "localizations": [ { "locale": "en", "text": "Croissant Hotel" } ], "default_locale": "en" }, "telephone": "+41445550200", "url": "https://www.example-croissant-hotel.com", "location": { "latitude": 47.3686, "longitude": 8.5392, "address": { "country": "CH", "locality": "Zurich", "postal_code": "8002", "street_address": "Paradeplatz 1" } }, "images": [ { "url": "https://www.example.com/croissant_hotel.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Croissant Hotel View" } ] } } ], "rating": 5.0, "category": "HOTEL", "hotel_data": { "hotel_star_class": 5 } }, { "poi_id": "hotel_tiburon", "name": { "localizations": [ { "locale": "en", "text": "Hotel Tiburon" } ], "default_locale": "en" }, "telephone": "+15105550100", "url": "https://www.example-tiburon-hotel.com", "location": { "latitude": 37.7652, "longitude": -122.2416, "address": { "country": "US", "locality": "Alameda", "region": "CA", "postal_code": "94501", "street_address": "1100 Atlantic Ave" } }, "images": [ { "url": "https://www.example.com/tiburon_hotel.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Hotel Tiburon Pool" } ] } } ], "rating": 4.2, "category": "HOTEL", "hotel_data": { "hotel_star_class": 5, "brand_ids": ["brand_a"] } } ] }
فید نقطه موردعلاقه چندزبانه
نام فایل: poi_multilingual.json
{ "data": [ { "poi_id": "hotel_banana_multilingual", "name": { "localizations": [ { "locale": "en", "text": "Banana Hotel" }, { "locale": "es", "text": "Hotel Plátano" }, { "locale": "fr", "text": "Hôtel Banane" } ], "default_locale": "en" }, "description": { "localizations": [ { "locale": "en", "text": "A beautiful hotel shaped like a banana." }, { "locale": "es", "text": "Un hermoso hotel con forma de plátano." }, { "locale": "fr", "text": "Un bel hôtel en forme de banane." } ], "default_locale": "en" }, "display_address": { "localizations": [ { "locale": "en", "text": "123 Banana Way, Fruit City, CA 90000" }, { "locale": "es", "text": "123 Vía Plátano, Ciudad Fruta, CA 90000" } ], "default_locale": "en" }, "telephone": "+16195550100", "url": "https://www.example-banana-hotel.com", "location": { "latitude": 32.7157, "longitude": -117.1611, "address": { "country": "US", "locality": "Fruit City", "region": "CA", "postal_code": "90000", "street_address": "123 Banana Way" } }, "images": [ { "url": "https://www.example.com/banana_hotel.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Banana Hotel Exterior" }, { "locale": "es", "text": "Exterior del Hotel Plátano" } ] } } ], "rating": 4.5, "category": "HOTEL", "hotel_data": { "hotel_star_class": 4, "brand_ids": ["brand_mango", "brand_apricot"] } } ] }