Это мой первый набег на OO JS, с проблемами.
В идеале в этом сценарии у меня был бы объект mapLocation, который я мог бы просто передать в координатах, значок, HTML-код для отображения при щелчке и все. Я добавил бы это к моей карте Google на странице, и у меня было бы кое-что многократное использование. Очевидно, это будет переработано позже.
Кроме того, я не особо доволен тем, как выглядит мой код в данный момент. :)
Вот объект, с которым я приду.
function mapLocation() {
this.lat = 0;
this.lng = 0;
this.icon = '';
this.html = '';
this.getLocation = getLocation;
}
function getLocation() {
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
var letteredIcon = new GIcon(baseIcon);
letteredIcon.image = this.icon;
var point = new GLatLng(this.lat, this.lng);
var marker = new GMarker(point, { icon:letteredIcon });
function show() {
marker.openInfoWindowHtml('Lat: '+this.lat+'<br />Lng: '+this.lng+'<br /><img src="'+this.icon+'" />');
}
alert(this.lat);
GEvent.addListener(marker, "click", show);
return marker;
}
А вот и моя реализация.
var a = new mapLocation;
a.lat = 52.136369;
a.lng = -106.696299;
a.icon = 'http://www.google.com/mapfiles/markerA.png';
a.html = 'asdf fdsa';
var b = a.getLocation();
map.addOverlay(b);
Итак, у меня появляется окно, мой маркер, но появляется функция show () с неопределенным в нем.
Мне любопытно, что я делаю неправильно - как я не так думаю - в этой проблеме.
Спасибо за взгляд.