
سأتجاوز المقدمات الطويلة التي توضح الأهمية التي اكتسبتها خرائط جووجل على مستوى تطبيقات الويب أو الجوال في الآونة الأخيرة ، فهذا يحتاج إلى مقالة مستقلة ومحتوى الويب يضم الكثير منها ، وسأدخل في الدرس مباشرة .
هذا الدرس سوف يقدم لك إن شاء الله مفاتيح مبدئية تساعدك على تعلم البرمجة بالاستعانة بخرائط جووجل ، ثم بعد ذلك يمكنك التوجه إلى القراءة حول المجال الذي تهتم به بالتحديد : تطبيقات الأيفون – تطبيقات الأندرويد – تطبيقات الويب – خدمات الويب …. إلخ .
تحتاج لأن تكون لديك خلفية ولو بسيطة في اللغات والتقنيات التالية :
١ : javascript .
٢ : DOM .
٣ : Object Orinted Programming .
كيف تفكر خرائط جووجل ؟
قبل خرائط جووجل كنّا نعتمد على الخرائط الورقية ، الكرة الأرضية مفرودة على مساحة مستطيلة تعرض عليها الحدود والمعالم الجغرافية بنسبة رياضية دقيقة ، ونستطيع تحديد مكان معين بدقة على وجه هذه الخريطة بقيمة الزوج المرتب الناتج عن خطوط الطول وخطوط العرض Latitudes and Longitudes .
خرائط جووجل تفعل ذلك أيضًا وبشكل مشابه تمامًا ، لكنّ الفارق بينها وبين الخرائط الورقية هي تقديمها لميزات إضافية منها :
١ – أنواع مختلفة من الخرائط Maps Types .
٢ – التفاعلية بين المستخدم والخريطة UI Control Elements .
٣ – تعليم الأماكن على الخريطة Overlay .
٤ – الأحداث Events .
٥ – الوظائف البرمجية والاستفادة من جداول البيانات .
.
.
١ : كيف أبدئ ؟
تعاملك مع خرائط جووجل كمبرمج أو مطور يعني تعاملك مع Google maps API ، ولذلك أنت تحتاج لاستدعاء ملف الجافاسكربت للوصول إلى أوامر هذه الواجهة .
وتستطيع ذلك عبر تسجيل نطاق موقعك من هنا ليتم إنشاء ما يعرف بـ API Key ، قم بنسخ الكود المخرج واستدعاءه في رأس الصفحة ، كمثال :
<head>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=<em>true_or_false</em>&key=ABQIAAAApGxVMx8Y2JXexxqlVql-PBRlP00RlZyqDBcg1q9-cyhfXS1xnBR4hbaquE1rSdO5gPZOJ6rMUczI8g" type="text/javascript"></script>
</head>
٢ – google.maps
يمكنني برمجة الخرائط عبر الكائنات والعمليات المتورثة من الكائن الرئيسي google.maps وهي كثيرة جدًا ، لكني سأورد هنا أهمّها :
كائن الخريطة .
* google.maps.Map(options)
نوع الخريطة .
* google.maps.MapTypeId.VALUE
الزوج المرتب من خطوط الطول والعرض .
* google.map.LatLng(Lat value , Lng value) .
عملية إضافة علامة في الخريطة .
* google.map.Marker({options})
نافذة المعلومات الصغيرة التي تظهر على الخريطة .
* google.map.InfoWindow()
إنشاء خريطة بسيطة جدا بالجافاسكربت .
لأفرض أني أريد إنشاء خريطة للعالم العربي لأضع علامات على أهم المعالم التاريخية فيها .
كيف أحدد حدود الخريطة التي أود إنشاءها بينما جووجل تقدم لي خريطة بحجم العالم ؟!
الحل بسيط يتم ذلك عن طريق :
* تعريف حاوية <div> للخريطة وتحديد طول وعرض لها .
* تحديد مركز الخريطة عن طريق خاصية center التي تحمل قيمة الزوج المرتب LatLng لنقطة مركز الخريطة .
من أين أحصل على هذه القيمة ؟
هناك الكثير من المواقع الخدماتية التي تسمح لي بالحصول على هذه القيمة إذا ما أدخلت اسم الدولة أو المدينة أو المنطقة .
كمثال هذا الموقع .
بمجرد إدخالي لاسم المنطقة Middle East سوف أحصل على قيمة مركز الشرق الأوسط وهي : 34.68565 للطول ، و 31.25982 للعرض .
بهذا فقط أستطيع إنشاء خريطة جووجلية ، لكن ما نفعله غالبًا هو تحديد خصائص الخريطة البارزة كذلك وهي :
* تحديد عدسة القرب من الخريطة عن طريق خاصية zoom وهي قيمة عددية تتراوح من ٠ إلى ١٨ حيث صفر هي نظرة بعيدة جدا للخريطة لا تظهر فيها أي ملامح ثم يتزايد القرب حتى أصل إلى ١٨ .
* mapTypeId نوع الخريطة .
قيمة نصية محدودة بأربع قيم وهي :
الخرائط العادية ذات البعدين وتعرض أسماء المدن والطرقات والمعالم .
ROADMAP
خرائط الأرض مصورة مسبقا .
SATELLITE
مزيج من النوعين السابقين حيث هي خرائط مصورة تعرض أسماء المدن والطرقات والمعالم.
HYBRID
عرض ملامح الخريطة جغرافيًا ، الجبال والبحار والهضبات والمرتفعات .. إلخ .
TERRAIN
وهذا كود إنشاء خريطة بسيطة جدا وبدائية للشرق الأوسط :
<html>
<head>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=<em>true_or_false</em>&key=ABQIAAAApGxVMx8Y2JXexxqlVql-PBRlP00RlZyqDBcg1q9-cyhfXS1xnBR4hbaquE1rSdO5gPZOJ6rMUczI8g" type="text/javascript"></script>
<script type="text/javascript">
function createMap()
{
var mapCenter= new google.maps.LatLng(31.25982,34.68565);
var mapOptions=
{
zoom:13 ,
center: mapCenter ,
mapTypeId : google.maps.mapTypeId.HYBIRD
}
var myMap = new google.maps.map(document.getElementById('mapDiv') , mapOptions);
}
</script>
</head>
<body onLoad="CreateMap">
<div id="mapDiv" style="height:300px; width:300px">
</div>
</body>
</html>