Deprecated: تابع Yoast\WP\SEO\Conditionals\Schema_Blocks_Conditional::get_feature_flag از نگارش Yoast SEO 20.5 که جایگزینی برای آن در دسترس نیست منسوخ شده است. in /var/www/html/wp-includes/functions.php on line 6078
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-includes/functions.php:6078) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1831
{"id":5141,"date":"2021-04-19T15:32:09","date_gmt":"2021-04-19T11:02:09","guid":{"rendered":"https:\/\/help.map.ir\/?post_type=manual_documentation&p=5141"},"modified":"2021-09-19T15:00:54","modified_gmt":"2021-09-19T10:30:54","slug":"basic-search","status":"publish","type":"manual_documentation","link":"https:\/\/help.map.ir\/documentation\/react-examples\/basic-search\/","title":{"rendered":"\u062c\u0633\u062a\u200c\u0648\u062c\u0648 (\u0633\u0627\u062f\u0647)"},"content":{"rendered":"\n
\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062c\u0633\u062a\u200c\u062c\u0648\u06cc \u0633\u0627\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0646\u0642\u0634\u0645\u0648\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062a\u0627 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a Mapir \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 App.js \u06cc\u0627 \u0647\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u062f\u06cc\u06af\u0631\u06cc \u0648\u0627\u0631\u062f \u0634\u0648\u062f. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u06a9\u0644\u06cc\u062f API \u0646\u0642\u0634\u0647\u0654 \u0645\u067e \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. <\/p>\n\n\n\n
\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u06a9\u0644\u06cc\u062f API\u200c \u062e\u0648\u062f\u062a\u0648\u0646 \u0631\u0648 \u0646\u06af\u0631\u0641\u062a\u06cc\u062f\u060c \u0627\u06cc\u0646\u062c\u0627<\/a> \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u06cc\u0645. \ud83d\ude09\ud83d\udd11<\/p>\n\n\n\n
\n\n\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport '.\/style.css';\nimport Mapir from 'mapir-react-component';\nimport { search } from '.\/API';\n\nimport '.\/api-key';\n\nconst Map = Mapir.setToken({\n transformRequest: url => {\n return {\n url: url,\n headers: {\n 'x-api-key': Your_API_Key, \/\/Mapir api key\n 'Mapir-SDK': 'reactjs'\n }\n };\n }\n});\n\nexport default function App() {\n const [text, setText] = useState('');\n const [results, setResults] = useState([]);\n const [marker, setMarker] = useState(null);\n const [center, setCenter] = useState([51.42047, 35.729054]);\n\n useEffect(() => {\n if (text.length > \u06f1) {\n const params = {};\n const options = { text };\n for (let key in options) {\n if (options[key] !== null && options[key] !== '') {\n params[key] = options[key];\n }\n }\n search(params)\n .then(data => data.json())\n .then(data => {\n if (data['odata.count'] > \u06f0) {\n setResults(data.value);\n } else {\n setResults([{ notFound: true }]);\n }\n });\n } else if (text.length === 0) {\n setResults([]);\n }\n }, [text]);\n\n function clearSearch() {\n setResults([]);\n setText('');\n }\n\n return (\n <>\n <div className=\"App\">\n <Mapir center={center} zoom={[10]} Map={Map}>\n {marker !== null && (\n <Mapir.Marker\n coordinates={[marker.lng, marker.lat]}\n anchor=\"bottom\"\n Image={'https:\/\/map.ir\/css\/images\/marker-default-blue.svg'}\n \/>\n )}\n <\/Mapir>\n <\/div>\n <div class=\"container search-box\">\n <div class=\"container search-box__item flex-row\">\n <input\n autocomplete=\"off\"\n type=\"text\"\n id=\"search\"\n placeholder=\"\u062f\u0646\u0628\u0627\u0644 \u06a9\u062c\u0627 \u0645\u06cc‌\u06af\u0631\u062f\u06cc\u062f...\"\n onChange={e => setText(e.target.value)}\n value={text}\n \/>\n {results.length > \u06f0 && (\n <div class=\"clear-seach\" onClick={() => clearSearch()}>\n <span> ✖ <\/span>\n <\/div>\n )}\n <div class=\"btn-seach\">\n {' '}\n <span>\u0628\u0631\u0648<\/span>\n <\/div>\n <\/div>\n {results.length > \u06f0 && (\n <div class=\"container search-box__item search-results\">\n {results.map(item => {\n if (item.notFound === true) {\n return <p>\u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f<\/p>;\n } else {\n return (\n <div\n onClick={() => {\n setMarker({\n lng: item.geom.coordinates[0],\n lat: item.geom.coordinates[1]\n });\n setCenter(item.geom.coordinates);\n }}\n className=\"search-result-item\"\n >\n <p className=\"search-result-item-title\">\n <img src=\"https:\/\/map.ir\/css\/images\/marker-default-white.svg\" \/>\n {item.title}\n <\/p>\n <p className=\"search-result-item-address\">{item.address}<\/p>\n <\/div>\n );\n }\n })}\n <\/div>\n )}\n <\/div>\n <\/>\n );\n}\n<\/pre>\n\n\n