نشانگرها مکان های منفرد را روی نقشه نشان می دهند. میتوانید با تغییر رنگ پیشفرض، یا جایگزین کردن نماد نشانگر با یک تصویر سفارشی، نشانگرهای خود را سفارشی کنید. پنجرههای اطلاعات میتوانند زمینه اضافی را برای یک نشانگر فراهم کنند.
نمونه کد
مخزن ApiDemos در GitHub شامل نمونه ای است که ویژگی های مختلف نشانگر را نشان می دهد:
کاتلین
- MapWithMarker : یک نقشه ساده با نشانگر. آموزش افزودن نقشه با نشانگر-kt را ببینید.
- MarkerDemoActivity : استفاده از نشانگرها روی نقشه، شامل گزینهها و شنوندگان
جاوا
- MapWithMarker : یک نقشه ساده با نشانگر. آموزش افزودن نقشه با نشانگر را ببینید.
- MarkerDemoActivity : استفاده از نشانگرها روی نقشه، شامل گزینهها و شنوندگان
مقدمه
نشانگرها مکان ها را روی نقشه شناسایی می کنند. نشانگر پیشفرض از یک نماد استاندارد استفاده میکند که در ظاهر و ظاهر Google Maps مشترک است. این امکان وجود دارد که رنگ، تصویر یا نقطه لنگر آیکون را از طریق API تغییر دهید. نشانگرها اشیایی از نوع Marker
هستند و با روش GoogleMap.addMarker(markerOptions)
به نقشه اضافه می شوند.
نشانگرها طوری طراحی شده اند که تعاملی باشند. آنها رویدادهای click
را به طور پیش فرض دریافت می کنند و اغلب با شنوندگان رویداد برای نمایش پنجره های اطلاعات استفاده می شوند. تنظیم ویژگی draggable
نشانگر روی true
به کاربر این امکان را می دهد که موقعیت نشانگر را تغییر دهد. از یک فشار طولانی برای فعال کردن قابلیت حرکت نشانگر استفاده کنید.
بهطور پیشفرض، وقتی کاربر روی یک نشانگر ضربه میزند، نوار ابزار نقشه در سمت راست پایین نقشه ظاهر میشود و به کاربر امکان دسترسی سریع به برنامه تلفن همراه Google Maps را میدهد. می توانید نوار ابزار را غیرفعال کنید. برای اطلاعات بیشتر، راهنمای کنترلها را ببینید.
شروع کار با نشانگرها
این قسمت از Maps Live اصول اولیه اضافه کردن نشانگرها به نقشه شما با استفاده از Maps SDK برای Android را پوشش میدهد.
یک نشانگر اضافه کنید
مثال زیر نحوه افزودن نشانگر به نقشه را نشان می دهد. نشانگر در مختصات -33.852,151.211
(سیدنی، استرالیا) ایجاد میشود و رشته «نشانگر در سیدنی» را پس از کلیک کردن در یک پنجره اطلاعات نمایش میدهد.
کاتلین
override fun onMapReady(googleMap: GoogleMap) { // Add a marker in Sydney, Australia, // and move the map's camera to the same location. val sydney = LatLng(-33.852, 151.211) googleMap.addMarker( MarkerOptions() .position(sydney) .title("Marker in Sydney") ) googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) }
جاوا
@Override public void onMapReady(GoogleMap googleMap) { // Add a marker in Sydney, Australia, // and move the map's camera to the same location. LatLng sydney = new LatLng(-33.852, 151.211); googleMap.addMarker(new MarkerOptions() .position(sydney) .title("Marker in Sydney")); googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); }
نمایش اطلاعات اضافی در مورد یک نشانگر
یک الزام رایج این است که وقتی کاربر روی یک نشانگر روی نقشه ضربه میزند، اطلاعات اضافی درباره مکان یا مکان نشان داده شود. راهنمای پنجره های اطلاعات را ببینید.
داده ها را با یک نشانگر مرتبط کنید
شما می توانید یک شی داده دلخواه را با یک نشانگر با استفاده از Marker.setTag()
ذخیره کنید و شی داده را با استفاده از Marker.getTag()
بازیابی کنید. نمونه زیر نشان می دهد که چگونه می توانید تعداد دفعاتی که یک نشانگر با استفاده از برچسب ها کلیک شده است را بشمارید:
کاتلین
/** * A demo class that stores and retrieves data objects with each marker. */ class MarkerDemoActivity : AppCompatActivity(), OnMarkerClickListener, OnMapReadyCallback { private val PERTH = LatLng(-31.952854, 115.857342) private val SYDNEY = LatLng(-33.87365, 151.20689) private val BRISBANE = LatLng(-27.47093, 153.0235) private var markerPerth: Marker? = null private var markerSydney: Marker? = null private var markerBrisbane: Marker? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_markers) val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment? mapFragment!!.getMapAsync(this) } /** Called when the map is ready. */ override fun onMapReady(map: GoogleMap) { // Add some markers to the map, and add a data object to each marker. markerPerth = map.addMarker( MarkerOptions() .position(PERTH) .title("Perth") ) markerPerth?.tag = 0 markerSydney = map.addMarker( MarkerOptions() .position(SYDNEY) .title("Sydney") ) markerSydney?.tag = 0 markerBrisbane = map.addMarker( MarkerOptions() .position(BRISBANE) .title("Brisbane") ) markerBrisbane?.tag = 0 // Set a listener for marker click. map.setOnMarkerClickListener(this) } /** Called when the user clicks a marker. */ override fun onMarkerClick(marker: Marker): Boolean { // Retrieve the data from the marker. val clickCount = marker.tag as? Int // Check if a click count was set, then display the click count. clickCount?.let { val newClickCount = it + 1 marker.tag = newClickCount Toast.makeText( this, "${marker.title} has been clicked $newClickCount times.", Toast.LENGTH_SHORT ).show() } // Return false to indicate that we have not consumed the event and that we wish // for the default behavior to occur (which is for the camera to move such that the // marker is centered and for the marker's info window to open, if it has one). return false } }
جاوا
/** * A demo class that stores and retrieves data objects with each marker. */ public class MarkerDemoActivity extends AppCompatActivity implements GoogleMap.OnMarkerClickListener, OnMapReadyCallback { private final LatLng PERTH = new LatLng(-31.952854, 115.857342); private final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); private final LatLng BRISBANE = new LatLng(-27.47093, 153.0235); private Marker markerPerth; private Marker markerSydney; private Marker markerBrisbane; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_markers); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** Called when the map is ready. */ @Override public void onMapReady(GoogleMap map) { // Add some markers to the map, and add a data object to each marker. markerPerth = map.addMarker(new MarkerOptions() .position(PERTH) .title("Perth")); markerPerth.setTag(0); markerSydney = map.addMarker(new MarkerOptions() .position(SYDNEY) .title("Sydney")); markerSydney.setTag(0); markerBrisbane = map.addMarker(new MarkerOptions() .position(BRISBANE) .title("Brisbane")); markerBrisbane.setTag(0); // Set a listener for marker click. map.setOnMarkerClickListener(this); } /** Called when the user clicks a marker. */ @Override public boolean onMarkerClick(final Marker marker) { // Retrieve the data from the marker. Integer clickCount = (Integer) marker.getTag(); // Check if a click count was set, then display the click count. if (clickCount != null) { clickCount = clickCount + 1; marker.setTag(clickCount); Toast.makeText(this, marker.getTitle() + " has been clicked " + clickCount + " times.", Toast.LENGTH_SHORT).show(); } // Return false to indicate that we have not consumed the event and that we wish // for the default behavior to occur (which is for the camera to move such that the // marker is centered and for the marker's info window to open, if it has one). return false; } }
در اینجا چند نمونه از سناریوهایی وجود دارد که ذخیره و بازیابی داده ها با نشانگرها مفید است:
- برنامه شما ممکن است انواع مختلفی از نشانگرها را برآورده کند، و شما می خواهید زمانی که کاربر روی آنها کلیک می کند با آنها رفتار متفاوتی داشته باشید. برای انجام این کار، می توانید یک
String
با نشانگر نشان دهنده نوع ذخیره کنید. - ممکن است با سیستمی که دارای شناسههای رکورد منحصربهفرد است، در ارتباط باشید، جایی که نشانگرها رکوردهای خاصی را در آن سیستم نشان میدهند.
- دادههای نشانگر ممکن است نشانگر اولویتی باشد که باید هنگام تصمیمگیری برای شاخص z یک نشانگر استفاده شود.
یک نشانگر قابل کشیدن ایجاد کنید
میتوانید زمانی که نشانگر به نقشه اضافه شد، مکان آن را تغییر دهید تا زمانی که ویژگی draggable
آن روی true
تنظیم شده باشد. برای فعال کردن کشیدن، نشانگر را طولانی فشار دهید. وقتی انگشت خود را از روی صفحه بردارید، نشانگر در همان موقعیت باقی می ماند.
نشانگرها به طور پیش فرض قابل کشیدن نیستند. شما باید به صراحت نشانگر را تنظیم کنید که قابل کشیدن باشد یا با MarkerOptions.draggable(boolean)
قبل از افزودن آن به نقشه، یا Marker.setDraggable(boolean)
پس از اضافه شدن به نقشه. همانطور که در رویدادهای کشیدن نشانگر توضیح داده شده است، می توانید به رویدادهای کشیدن روی نشانگر گوش دهید.
قطعه زیر یک نشانگر قابل کشیدن در پرث، استرالیا اضافه می کند.
کاتلین
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .draggable(true) )
جاوا
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .draggable(true));
یک نشانگر را سفارشی کنید
این ویدیو راه های استفاده از نشانگرها را برای تجسم مکان ها روی نقشه نشان می دهد.
نشانگرها ممکن است یک تصویر سفارشی را برای نمایش به جای نماد پیش فرض تعریف کنند. تعریف یک نماد شامل تنظیم تعدادی ویژگی است که بر رفتار بصری نشانگر تأثیر می گذارد.
نشانگرها از سفارشی سازی از طریق ویژگی های زیر پشتیبانی می کنند:
- موقعیت (الزامی)
- مقدار
LatLng
برای موقعیت نشانگر روی نقشه. این تنها ویژگی مورد نیاز برای یک شیMarker
است. - لنگر
- نقطه روی تصویر که در موقعیت LatLng نشانگر قرار می گیرد. این به طور پیش فرض در وسط پایین تصویر است.
- آلفا
- کدورت نشانگر را تنظیم می کند. پیشفرض 1.0 است.
- عنوان
- رشته ای که وقتی کاربر روی نشانگر ضربه می زند، در پنجره اطلاعات نمایش داده می شود.
- قطعه
- متن اضافی که در زیر عنوان نمایش داده می شود.
- نماد
- یک بیت مپ که به جای تصویر نشانگر پیش فرض نمایش داده می شود.
- قابل کشیدن
- اگر می خواهید به کاربر اجازه دهید نشانگر را جابجا کند روی
true
تنظیم کنید. پیش فرض ها بهfalse
. - قابل مشاهده است
- برای نامرئی کردن نشانگر، روی
false
تنظیم کنید. پیش فرض ها بهtrue
- جهت تخت یا بیلبورد
- بهطور پیشفرض، نشانگرها از جهتگیری بیلبورد استفاده میکنند، به این معنی که بهجای سطح نقشه، در جهت روی صفحه دستگاه ترسیم میشوند. چرخش، کج کردن، یا بزرگنمایی نقشه، جهت نشانگر را تغییر نمی دهد. می توانید جهت یک نشانگر را به صورت صاف در برابر زمین تنظیم کنید. نشانگرهای مسطح زمانی که نقشه می چرخد می چرخند و وقتی نقشه کج می شود چشم انداز را تغییر می دهند. مانند نشانگرهای بیلبورد، نشانگرهای مسطح زمانی که نقشه بزرگ یا کوچک می شود، اندازه خود را حفظ می کنند.
- چرخش
- جهت نشانگر، بر حسب درجه در جهت عقربه های ساعت مشخص شده است. اگر نشانگر صاف باشد، موقعیت پیش فرض تغییر می کند. موقعیت پیش فرض برای نشانگر مسطح تراز شمال است. هنگامی که نشانگر صاف نیست، موقعیت پیش فرض به سمت بالا است و چرخش به گونه ای است که نشانگر همیشه رو به دوربین است.
قطعه زیر یک نشانگر ساده با نماد پیش فرض ایجاد می کند.
کاتلین
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) )
جاوا
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation));
رنگ نشانگر را سفارشی کنید
امکان سفارشی کردن رنگ تصویر نشانگر پیش فرض با ارسال یک شی BitmapDescriptor
به متد icon() وجود دارد. می توانید از مجموعه ای از رنگ های از پیش تعریف شده در شی BitmapDescriptorFactory
استفاده کنید یا یک رنگ نشانگر سفارشی را با روش BitmapDescriptorFactory.defaultMarker(float hue)
تنظیم کنید. رنگ مقداری بین 0 تا 360 است که نشان دهنده نقاط روی چرخه رنگ است.
کاتلین
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)) )
جاوا
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
کدورت نشانگر را سفارشی کنید
می توانید کدورت یک نشانگر را با متد MarkerOptions.alpha() کنترل کنید. آلفا باید به عنوان یک شناور بین 0.0 و 1.0 مشخص شود که در آن 0 کاملاً شفاف و 1 کاملاً مات است.
کاتلین
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .alpha(0.7f) )
جاوا
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker(new MarkerOptions() .position(melbourneLocation) .alpha(0.7f));
تصویر نشانگر را سفارشی کنید
میتوانید تصویر نشانگر پیشفرض را با یک تصویر نشانگر سفارشی، که اغلب نماد نامیده میشود، جایگزین کنید. آیکون های سفارشی همیشه به عنوان BitmapDescriptor
تنظیم می شوند و با استفاده از یکی از روش های کلاس BitmapDescriptorFactory
تعریف می شوند.
-
fromAsset(String assetName)
- یک نشانگر سفارشی با استفاده از نام یک تصویر Bitmap در فهرست دارایی ها ایجاد می کند.
-
fromBitmap(Bitmap image)
- یک نشانگر سفارشی از یک تصویر Bitmap ایجاد می کند.
-
fromFile(String fileName)
- با استفاده از نام فایل تصویری Bitmap که در حافظه داخلی قرار دارد، یک نماد سفارشی ایجاد می کند.
-
fromPath(String absolutePath)
- یک نشانگر سفارشی از مسیر فایل مطلق یک تصویر Bitmap ایجاد می کند.
-
fromResource(int resourceId)
- یک نشانگر سفارشی با استفاده از شناسه منبع یک تصویر Bitmap ایجاد می کند.
قطعه زیر یک نشانگر با یک نماد سفارشی ایجاد می کند.
کاتلین
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)) )
جاوا
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
یک نشانگر را صاف کنید
نمادهای نشانگر معمولاً با توجه به صفحه نمایش کشیده می شوند. چرخش، کج کردن یا بزرگنمایی نقشه، جهت نشانگر را تغییر نمی دهد. می توانید جهت یک نشانگر را به صورت صاف در برابر زمین تنظیم کنید. نشانگرهایی که به این شکل جهتگیری میکنند، زمانی که نقشه چرخانده میشود، میچرخند و زمانی که نقشه کج میشود، پرسپکتیو تغییر میکند. نشانگرهای مسطح وقتی نقشه بزرگنمایی یا کوچکنمایی شود، اندازه خود را حفظ میکنند.
برای تغییر جهت نشانگر، ویژگی flat
نشانگر را روی true
تنظیم کنید.
کاتلین
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .flat(true) )
جاوا
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .flat(true));
یک نشانگر را بچرخانید
شما می توانید یک نشانگر را در اطراف نقطه لنگر آن با Marker
بچرخانید. متد setRotation()
. چرخش بر حسب درجه در جهت عقربه های ساعت از موقعیت پیش فرض اندازه گیری می شود. هنگامی که نشانگر روی نقشه صاف است، موقعیت پیش فرض شمال است. هنگامی که نشانگر صاف نیست، موقعیت پیش فرض به سمت بالا است و چرخش به گونه ای است که نشانگر همیشه رو به دوربین است.
مثال زیر نشانگر را 90 درجه می چرخاند. تنظیم نقطه لنگر روی 0.5,0.5
باعث می شود که نشانگر به جای پایه خود به دور مرکز خود بچرخد.
کاتلین
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .anchor(0.5f, 0.5f) .rotation(90.0f) )
جاوا
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .anchor(0.5f,0.5f) .rotation(90.0f));
نشانگر z-index
شاخص z ترتیب پشته این نشانگر را نسبت به سایر نشانگرهای روی نقشه مشخص می کند. یک نشانگر با شاخص z بالا در بالای نشانگرهایی با شاخص z کمتر کشیده می شود. مقدار z-index پیش فرض 0
است.
با فراخوانی MarkerOptions.zIndex()
، z-index را روی شی گزینه های نشانگر تنظیم کنید، همانطور که در قطعه کد زیر نشان داده شده است:
کاتلین
map.addMarker( MarkerOptions() .position(LatLng(10.0, 10.0)) .title("Marker z1") .zIndex(1.0f) )
جاوا
map.addMarker(new MarkerOptions() .position(new LatLng(10, 10)) .title("Marker z1") .zIndex(1.0f));
شما می توانید با فراخوانی Marker.getZIndex()
به z-index نشانگر دسترسی داشته باشید و می توانید با فراخوانی Marker.setZIndex()
آن را تغییر دهید.
نشانگرها همیشه بالای لایههای کاشی و دیگر پوششهای غیر نشانگر (روکشهای زمین، چند خط، چند ضلعی و سایر اشکال) بدون توجه به شاخص z سایر پوششها کشیده میشوند. نشانگرها به طور موثر در یک گروه z-index جداگانه در مقایسه با دیگر پوششها در نظر گرفته میشوند.
در مورد تأثیر z-index بر روی رویدادهای کلیک در زیر بخوانید.
رویدادهای نشانگر را مدیریت کنید
Maps API به شما امکان می دهد به رویدادهای نشانگر گوش دهید و به آنها پاسخ دهید. برای گوش دادن به این رویدادها، باید شنونده مربوطه را روی شی GoogleMap
که نشانگرها به آن تعلق دارند، تنظیم کنید. هنگامی که رویداد روی یکی از نشانگرهای روی نقشه رخ میدهد، پاسخ تماس شنونده با ارسال شی Marker
مربوطه به عنوان پارامتر فراخوانی میشود. برای مقایسه این شی Marker
با مرجع خود به یک شی Marker
، باید equals()
و نه ==
استفاده کنید.
می توانید به رویدادهای زیر گوش دهید:
رویدادهای کلیک نشانگر
می توانید از OnMarkerClickListener
برای گوش دادن به رویدادهای کلیک روی نشانگر استفاده کنید. برای تنظیم این شنونده روی نقشه، با GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)
تماس بگیرید. هنگامی که کاربر روی یک نشانگر کلیک می کند، onMarkerClick(Marker)
فراخوانی می شود و نشانگر به عنوان آرگومان ارسال می شود. این روش یک Boolean برمی گرداند که نشان می دهد آیا شما رویداد را مصرف کرده اید (یعنی می خواهید رفتار پیش فرض را سرکوب کنید). اگر false
را برگرداند، رفتار پیشفرض علاوه بر رفتار سفارشی شما رخ خواهد داد. رفتار پیشفرض برای رویداد کلیک نشانگر، نمایش پنجره اطلاعات آن (در صورت وجود) و حرکت دوربین بهگونهای است که نشانگر در مرکز نقشه باشد.
تاثیر z-index بر روی رویدادهای کلیک:
- هنگامی که کاربر روی دسته ای از نشانگرها کلیک می کند، رویداد کلیک برای نشانگری با بالاترین شاخص z فعال می شود.
- حداکثر یک رویداد در هر کلیک فعال می شود. به عبارت دیگر، کلیک به نشانگرها یا همپوشانی های دیگر با مقادیر z-index کمتر منتقل نمی شود.
- کلیک کردن بر روی دسته ای از نشانگرها باعث می شود که کلیک های بعدی در خوشه چرخیده و هر کدام را به نوبه خود انتخاب کنید. ترتیب چرخه ابتدا z-index و سپس نزدیکی به نقطه کلیک را اولویت بندی می کند.
- اگر کاربر خارج از مجاورت خوشه کلیک کند، API دوباره خوشه را محاسبه می کند و وضعیت چرخه کلیک را بازنشانی می کند تا از ابتدا شروع شود.
- قبل از شروع مجدد چرخه، رویداد کلیک از طریق خوشههای نشانگر به شکلها و پوششهای دیگر میافتد.
- نشانگرها به طور مؤثر در یک گروه z-index جداگانه در مقایسه با دیگر پوشش ها یا اشکال (خطوط، چند ضلعی، دایره، و/یا همپوشانی زمین)، صرف نظر از شاخص z سایر پوشش ها، در نظر گرفته می شوند. اگر چندین نشانگر، همپوشانی یا شکل روی هم قرار گیرند، رویداد کلیک ابتدا در میان خوشه نشانگرها چرخه میشود، سپس برای سایر همپوشانیها یا شکلهای قابل کلیک، بر اساس مقادیر z-index آنها فعال میشود.
رویدادهای کشیدن نشانگر
می توانید از OnMarkerDragListener
برای گوش دادن به رویدادهای کشیدن روی یک نشانگر استفاده کنید. برای تنظیم این شنونده روی نقشه، با GoogleMap.setOnMarkerDragListener
تماس بگیرید. برای کشیدن نشانگر، کاربر باید به مدت طولانی روی نشانگر فشار دهد. هنگامی که کاربر انگشت خود را از روی صفحه بر می دارد، نشانگر در آن موقعیت باقی می ماند. هنگامی که یک نشانگر کشیده می شود، در ابتدا onMarkerDragStart(Marker)
فراخوانی می شود. در حالی که نشانگر در حال کشیدن است، onMarkerDrag(Marker)
به طور مداوم فراخوانی می شود. در پایان کشیدن، onMarkerDragEnd(Marker)
فراخوانی می شود. شما می توانید موقعیت نشانگر را در هر زمان با فراخوانی Marker.getPosition()
دریافت کنید.