Вот вроде бы хороший компонент SOBI2 но кривоватый он какойто.
Возникла проблема с картой.
Использую  версию RC 2.9.2.3   на Joomla 1.0.15
В SOBI2 встроена поддержка Google (http://www.google.com/) карты но уж как то криво встроена.
При добавлении записи по умолчнанию нужно тупо вбивать координаты и карта не отображается.
Используя руководство с оффсайта можно добавить код карты в новое поле и тогда появится сама карта но вот отмечать на ней уж очень неудобно ибо при нажатии на карту маркер не ставится а ток пишутся координаты в поля.. а пользователь остается в недоумении..
Решил я исправить это и отредактировал код, при нажатии маркер появляется.. координаты пишутся но если кликнуть в другом месте создается еще один маркер и тд.. вот собсна вопрос: подскажите как ограничить каличество маркеров чтоб при последующих нажатия маркер перемещался а не создавался новый?

Код:
Код:
<script src="http://maps.google.com/maps?file=api&v=1&key={googleApiKey}" type="text/javascript"></script>;
 
<div id="map" style="width: 400px; height: 300px"></div>
 
<script type="text/javascript">
    //<![CDATA[
 
    var start_latitude = "52.4777619318499";
    var start_longitude = "-1.89788818359375";
    var zoomlevel_add = 11;
    var zoomlevel_edit = 3;
 
    var map = new GMap(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
 
  var latitude = document.getElementById('field_latitude').value;
  if (latitude == "")
    latitude = start_latitude;
  var longitude = document.getElementById('field_longitude').value;
  if (longitude == "")
    longitude = start_longitude;
  if (latitude == start_latitude)
     zoomlevel = zoomlevel_add;
  else
     zoomlevel = zoomlevel_edit;
 
    // center and zoom to the lat/long in the form
    map.centerAndZoom(new GPoint(longitude,latitude), zoomlevel);
 
    GEvent.addListener(map, 'click',
        function(overlay, point) {
            if (point) {
                document.getElementById('field_latitude').value = point.y;
                document.getElementById('field_longitude').value = point.x;

            }
        }
    );
GEvent.addListener(map, "click", function(overlay, latlng) {
          if (latlng) {
            marker = new GMarker(latlng, {draggable:true});
map.addOverlay(marker);
}
});
//]]>
</script>

Добавить комментарий


Защитный код
Обновить