Компьютерра, 2006 № 37 (657) (Журнал «Компьютерра») - страница 66



• name (заголовок метки),


• message (сообщение),


• lat (широта),


• lng (долгота),


и выглядит она следующим образом:



1.

А текст странички принимает следующий вид:

1. var baseIcon = new GIcon();

2. baseIcon.iconSize=new GSize(20,20);

3. baseIcon.iconAnchor=new GPoint(10,20);

4. baseIcon.infoWindowAnchor=new GPoint(10,0);

5. Var gmarkers = [];

6. Var i = 0;

7. function createMarker(point,name,message,micon) {

8. var marker = new GMarker(point, {icon:micon, title:name});

9. GEvent.addListener(marker, “click”, function() {

10. Marker.openInfoWindowHtml(“”+name+”
”+ message);

11. });

12. gmarkers[i] = marker;

13. i++;

14. Return marker;

15. }

16. GDownloadUrl(“t2006.xml”, function(data) {

17. var xml = GXml.parse(data);

18. var markers = xml.documentElement.getElementsByTagName(«marker»);

19. for (var k = 0; k < markers.length; k++) {

20. var point = new GLatLng(parseFloat(markers[k].getAttribute(«lat»)), parseFloat

(mark ers[k].getAttribute(“lng”)));

21. var name = markers[k].getAttribute(“name”);

22. var message = markers[k].getAttribute(“message”);

23. var micon = new GIcon(baseIcon);

24. var icon_number = k + 1;

25. micon.image = “http://www.vkph.com/t2006/i” + icon_number + “.png”;

26. var marker = createMarker(point,name,message,micon);

27. map.addOverlay(marker);

28. }

29. });

После загрузки всех данных из файла в память, массив записей перебирается в цикле (строки 19—28). Для каждого элемента осуществляется выборка и присвоение значений необходимым переменным. В строке 20 функции GLatLng передаются полученные значения lat и lng, результат присваивается переменной point (функция parseFloat служебная — используется для преобразования числового значения к плавающей точке).

Значения переменных name и message переносятся в соответствии с их «тезками» из XML-файла (21—22).

В строках 23—25 создается новый объект-иконка, наследующий свойства ранее объявленного baseIcon (23), со своей уникальной картинкой (25). В нашем случае картинки — это просто цифры, которые должны помочь посетителю странички понять, в какой последовательности нужно обходить метки на карте, но вы можете назначать любые картинки. В следующей строке вызывается функция createMarker, результат действия которой присваивается переменной-метке marker. В строке 27 очередная метка добавляется на карту (рис. 4).



Функция createMarker (26) выполняет те действия, что мы разбирали ранее: объявление метки с определенной иконкой (в нашем случае одна на все города — флаг Российской Федерации) и всплывающей подсказкой, а также обработчика мышиного клика для вывода комментариев (см. строки 8—15).