از نشانگرها برای نمایش مکانهای تکی روی نقشه استفاده کنید. این صفحه نشان میدهد چگونه بااستفاده از عناصر HTML سفارشی و بهصورت برنامهریزیشده به نقشه نشانگر اضافه کنید.
بار کردن کتابخانه نشانگر پیشرفته
برای افزودن نشانگر پیشرفته به نقشه، کد نقشه شما باید کتابخانه marker را بار کند، که کلاسهای AdvancedMarkerElement و PinElement را ارائه میدهد. این امر صرفنظر از اینکه برنامه شما نشانگرها را بهصورت برنامهریزیشده بار میکند یا بااستفاده از HTML اعمال میشود. برای انجام این کار، برنامه شما ابتدا باید
میانای برنامهسازی کاربردی جاوا اسکریپت در Maps را بار کند.
روشی که برای بار کردن کتابخانهها استفاده میکنید به نحوه بار کردن Maps JavaScript API در صفحه وب شما بستگی دارد.
اگر صفحه وب شما از بار کردن دستورگان پویا استفاده میکند، کتابخانه نشانگرها را اضافه کنید و
AdvancedMarkerElement(و بهصورت اختیاریPinElement) را در زمان اجرا وارد کنید، همانطور که در اینجا نشان داده شده است.const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary("marker");
اگر صفحه وب شما از برچسب بارگیری مستقیم متن استفاده میکند،
libraries=markerرا به متن بارگیری اضافه کنید، همانطور که در گزیده زیر نشان داده شده است. انجام این کار باعث میشود همAdvancedMarkerElementو همPinElementوارد شوند.<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&v=weekly&libraries=marker" defer ></script>
تنظیم شناسه نقشه
برای استفاده از «نشانگرهای پیشرفته»، شناسه نقشه لازم است (میتوانید از DEMO_MAP_ID استفاده کنید).
شناسه نقشه را در گزینههای نقشه تنظیم کنید، همانطور که در اینجا نشان داده شده است:
const map = new Map(document.getElementById('map') as HTMLElement, { center: { lat: 37.4239163, lng: -122.0947209 }, zoom: 14, mapId: 'DEMO_MAP_ID', });
اگر از عناصر وب استفاده میکنید، میتوانید شناسه نقشه را مستقیماً در عنصر gmp-map
تنظیم کنید:
<gmp-map center="37.4239163,-122.0947209" zoom="14" map-id="DEMO_MAP_ID"></gmp-map>
درباره شناسههای نقشه بیشتر بدانید.
افزودن نشانگر بااستفاده از عناصر سفارشی HTML
برای افزودن نشانگر پیشرفته بااستفاده از عناصر HTML سفارشی، عنصر فرزند gmp-advanced-marker را به عنصر gmp-map اضافه کنید. تکهکد زیر
افزودن نشانگرها به صفحه وب را نشان میدهد:
<gmp-map
center="41.027748173921374, -92.41852445367961"
zoom="13"
map-id="DEMO_MAP_ID">
<gmp-advanced-marker
position="41.027748173921374, -92.41852445367961"
title="Ottumwa, IA"></gmp-advanced-marker>
</gmp-map>دیدن کد منبع نمونه کامل
این مثال نشان میدهد که چگونه بااستفاده از HTML نقشهای با نشانگر ایجاد کنیم.
TypeScript
// This example adds a map with markers, using web components.JavaScript
// This example adds a map with markers, using web components.CSS
/* Note: This CSS file is intentionally blank. */
HTML
<html>
<head>
<title>Add a Map with Markers using HTML</title>
<style>
gmp-map {
height: 100%;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
<script type="module" src="./index.js"></script>
<script
async
src="https://maps.googleapis.com/maps/api/js?loading=async&key=GOOGLE_MAPS_API_KEY&libraries=maps,marker"></script>
</head>
<body>
<gmp-map
center="41.027748173921374, -92.41852445367961"
zoom="13"
map-id="DEMO_MAP_ID">
<gmp-advanced-marker
position="41.027748173921374, -92.41852445367961"
title="Ottumwa, IA"></gmp-advanced-marker>
</gmp-map>
</body>
</html>افزودن نشانگر بهصورت برنامهریزیشده
برای افزودن نشانه پیشرفته به نقشه بهصورت برنامهنویسی،
AdvancedMarkerElement جدیدی ایجاد کنید و آن را به نقشه پیوست کنید، همانطور که در این مثال نشان داده شده است:
TypeScript
const mapElement = document.querySelector('gmp-map')!; async function init() { // Request needed libraries. const [{ AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('maps'), ]); const marker = new AdvancedMarkerElement({ position: { lat: 37.4239163, lng: -122.0947209 }, }); mapElement.append(marker); }
JavaScript
const mapElement = document.querySelector('gmp-map'); async function init() { // Request needed libraries. const [{ AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('maps'), ]); const marker = new AdvancedMarkerElement({ position: { lat: 37.4239163, lng: -122.0947209 }, }); mapElement.append(marker); }
افزودن عناصر فقط هنگام استفاده از عناصر وب امکانپذیر است. اگر از عنصر div
برای بار کردن نقشه استفاده میشود، از دارایی map برای مرتبط کردن مکاننما
با نمونه نقشه استفاده کنید، همانطور که در اینجا نشان داده شده است:
myMap = new google.maps.Map(document.getElementById("map"), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
});
const marker = new AdvancedMarkerElement({
map: myMap,
position: { lat: -34.397, lng: 150.644 },
});برداشتن نشانگر
برای برداشتن نشانگر از نقشه، marker.map یا marker.position را روی
null تنظیم کنید.
// Set the map to null. marker.map = null; // Set the position to null. marker.position = null;
دیدن کد منبع نمونه کامل
این مثال نشان میدهد چگونه میتوان نشانگری به نقشه اضافه کرد.
TypeScript
const mapElement = document.querySelector('gmp-map')!; async function init() { // Request needed libraries. const [{ AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('maps'), ]); const marker = new AdvancedMarkerElement({ position: { lat: 37.4239163, lng: -122.0947209 }, }); mapElement.append(marker); } void init();
JavaScript
const mapElement = document.querySelector('gmp-map'); async function init() { // Request needed libraries. const [{ AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('marker'), google.maps.importLibrary('maps'), ]); const marker = new AdvancedMarkerElement({ position: { lat: 37.4239163, lng: -122.0947209 }, }); mapElement.append(marker); } void init();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ gmp-map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
HTML
<html>
<head>
<title>Default Advanced Marker</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(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: "GOOGLE_MAPS_API_KEY"
});
</script>
</head>
<body>
<gmp-map
center="37.4239163,-122.0947209"
zoom="14"
map-id="4504f8b37365c3d0"></gmp-map>
</body>
</html>