ערים ישראליות על מפת גוגל

Submitted by ליאור on ב', 04/28/2008 - 12:03

כל הכבוד על היוזמה ועל חוסר ההשלמה עם המגבלה של גוגל. יש לי באופק שימוש במפות בישראל, וחשבתי לא להשתמש במפות גוגל בגלל הבעיה הזו - הפוסט הזה מאפשר לי באמת לשקול להשתמש במפות גוגל שוב.

שאלה קטנה - מדוע ייצור סוג תוכן עיר והכנסת כמה ערים הוא פתרון מחריד בעיניך?

היי ליאור
ניסיתי להוסיף את זה ל code arguments של view מסוג gmap ללא הצלחה
בדקתי גם עם devel אני לא רואה שום משתנה $map או משהו דומה ,
חיפשתי באתר העולמי ללא הצלחה

אצלך זה עובד בתוך view ?

אשמח אם תסביר קצת יותר

אני אוהב את גוגל.
רוב חיי מתגלגלים בשרתים שלהם ופעם כשעברתי לתמיכת imap במייל הם הקפיאו לי את חשבון הgmail שלי הם התרצו רק לאחר איזה שבוע (שבוע מאוד מפחיד) שבו חתמתי כל מכתב ב... אשמח לקבל בחזרה את חיי.
אבל אני גם קצת כועס על גוגל.
יש איפול תקשורתי על הסיבה מדוע אין תמיכה סבירה (או אפילו חלשה) ברחובות ערים בישראל.
הסיבה אינה בטחונית (כי את הטופוגרפיות רואים בסדר) אז באמת שאין לי מושג.
וכך לינווייט כחברה שמימשה כמה אתרי mashup שמתחברים לgoogle-maps נותרנו ללא פתרון איכותי לאתרים בארץ. 
אחד מהלקוחות שלנו, מחסוםwatch רצו עוד קצת מידע על מפת הגוגל בגלל שהגולשים לא הבינו מה זאת המפה ואיך להתמצא בה.
הבקשה שלהן הייתה פשוטה אנחנו רוצים 6-7 ערים על המפה ולא כמרקר בצבע אחר אלא שעל המפה יהיה כתוב - "תל אביב, חיפה, שכם וכדומה..."
הפיתרון הטריוויאלי היה מחריד (מודל המפות של גוגל יודע לתת icon שונה לכל סוג תוכן, אז לייצר סוגי תוכן לכל עיר -מזעזע!)
לא יכולתי לחיות עם עיוות כל כך חמור של צורת העבודה עם דרופל ולכן צללתי פנימה.
אם מסתכלים על הצורה שהgmap מודול עובד אז הוא בעצם מייצר מפה בסיסית ואז מוסיף אליה נקודות (markers).
אנחנו צריכים בדיוק לפני הצגת המפה להוסיף עוד מרקרים משלנו.
כתבתי את חתיכת הקוד הבאה והוצאתי אותה לקובץ inc בשביל שנוכל כולנו(הקהילה) להשתמש בה גם בעתיד בפרויקטים נוספים.

?php
function israeli_cities_overlay($map) {
$map['markers'][] = add_marker('blue',31.85,34.65,'Tel Aviv');
$map['markers'][] = add_marker('green',32.7,34.75,'Haifa');
/* - originals
$map['markers'][] = add_marker('yellow',31.47,35.13,'Jerusalem');
$map['markers'][] = add_marker('blank',31.31,35.05,'Hebron');
$map['markers'][] = add_marker('pink',32.13,35.16,'Nablus');
$map['markers'][] = add_marker('white',31.14,35.11,'Beer Sheva');
$map['markers'][] = add_marker('orange',31.53,35.11,'Ramallah');
*/
// altered +0.2 N
$map['markers'][] = add_marker('yellow',31.67,35.13,'Jerusalem');
$map['markers'][] = add_marker('blank',31.51,35.05,'Hebron');
$map['markers'][] = add_marker('pink',32.33,35.16,'Nablus');
$map['markers'][] = add_marker('white',31.24,34.47,'Beer Sheva');
$map['markers'][] = add_marker('orange',31.73,35.11,'Ramallah');
return $map;
}

function add_marker($name, $lat,$long,$title){
$marker = array();
$marker['markername'] = $name;
$marker['latitude'] = $lat;
$marker['longitude'] = $long;
$marker['opts']['title'] = $title;
return $marker;
}

אז בוא נסביר מה אנחנו רואים...
הפונקציה הראשונה מקבלת את מפת הגוגל לפני ההצגה שלה ועושה בה שפטים (בסך הכל מוסיפה לה מרקרים).
את הפונקציה השנייה כתבתי בשביל לא לשכפל קוד ותראו שאני מעביר לה את הכותרת וקריאות המיקום הרוחבי והאופקי, הדבר שלא הצלחתי לפתור והוא באגי קצת בgmap מודול הוא עדכון המרקרים (ולמרות שהוספתי מרקרים רבים לא הצלתי להוסיף אותם בשמם האמיתי ולכן עשיתי קיצורים (symlinks) מאיקונים שעובדים כמו הצבעים למשל.
אני אצרף קובץ לפוסט שבו נמצאים האיקונים השקופים של הערים והisrael-overlay.inc שמכיל את הקוד הנ"ל.
המקום הנכון לקרוא לפונקציה היא או בקוד שיש לך את ה$map או אפשר גם בargument handeling code שבו אני חושב שאפשר להגיע ל$map גם כן.
קריאה מתוך הקוד ל

israeli_cities_overlay($map);

תוסיף את הערים
תהנה
ליאור
נ.ב. הפוסט הנ"ל מוקדש לאביאור (מצטער שלקח לי כל כך הרבה זמן לשבת ולכתוב אותו :) )