LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 01:37:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Карта Open street maps - решено!  (Прочитано 3881 раз)
0 Пользователей и 1 Гость смотрят эту тему.
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« : 28.02.2011, 13:08:37 »

Здравствуйте! Делаю каталог организаций на SOBI2. Решил поставить карту, но карты яндекса и Google не устраивают тем что нет прорисовки нужных мне посёлков. Наткнулся на проект Open street map - то что надо, искомые объекты там прорисованы, а если нет то можно обрисовать самому. Вообщем далее с помощью Угольникова Сергея -  webmap-blog.ru отобразил карту со слоем OSM. Сначала меняем код showGoogleMaps из файла
entry.functions.php на:
Код:
                                                                     
function showGoogleMaps($mySobi, $config)
    {

if( !$config->useGoogleMaps) {
return null;
}

$title = $config->jsAddSlashes( $mySobi->title );
$GeoPos = $config->getGeoPosition( $mySobi->id );
if( $GeoPos['lat'] && $GeoPos['long'] && is_numeric( $GeoPos['lat'] ) && is_numeric( $GeoPos['lat'] ) ) {
?>
<div style="width: <?php echo $config->googleMapsWidth; ?>px; height: <?php echo $config->googleMapsHeight; ?>px;" id="sobi2GoogleMaps"></div>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
//<![CDATA[

function initialize() {
var myLatlng = new Google.maps.LatLng(<?php echo $GeoPos['lat']; ?>, <?php echo $GeoPos['long']; ?>);

var myOptions = {
zoom: <?php echo $config->googleMapsZoom; ?>,
center: myLatlng,
mapTypeControl: false,
navigationControl: true,
navigationControlOptions: {style: Google.maps.NavigationControlStyle.SMALL},
mapTypeId: Google.maps.MapTypeId.ROADMAP     
}
var map = new Google.maps.Map(document.getElementById("sobi2GoogleMaps"), myOptions);

// Задаем слой с OSM
 
var openStreet = new Google.maps.ImageMapType({
  getTileUrl: function(ll, z) {
var X = ll.x % (1 << z);  // wrap
return "http://tile.openstreetmap.org/" + z + "/" + X + "/" + ll.y + ".png";
  },
  tileSize: new Google.maps.Size(256, 256),
  isPng: true,
  maxZoom: 18,
  name: "OSM",
  alt: "Слой с Open Streetmap"
});
 
//Добавляем слои к карте
 
map.mapTypes.set('osm', openStreet);
map.setMapTypeId('osm');

map.setOptions({
  mapTypeControlOptions: {
mapTypeIds: [
  'osm',
  Google.maps.MapTypeId.ROADMAP,
  Google.maps.MapTypeId.TERRAIN,
  Google.maps.MapTypeId.SATELLITE,
  Google.maps.MapTypeId.HYBRID
],
style: Google.maps.MapTypeControlStyle.DROPDOWN_MENU
  }
});

var marker = new Google.maps.Marker({
position: myLatlng,
map: map,
title:"<?php echo _SOBI2_GOOGLEMAPS_LABEL; ?>"
});


}

                 Google.maps.event.addDomListener(window,'load', initialize);

//]]>
</script>
<?php
}
elseif ((strlen(trim($GeoPos['lat'])) && strlen(trim($GeoPos['long']))) && (!is_numeric($GeoPos['lat']) || !is_numeric($GeoPos['lat']))) {
trigger_error("HTML_SOBI::showGoogleMaps(): Given cooordinates ({$GeoPos['lat']}, {$GeoPos['long']}) are not correct. Please enter float values");
}
    }
    function waySearchUrl( $waySearchLink )
    {
$config =& sobi2Config::getInstance();
if($config->useWaySearch) {
echo $waySearchLink;
}
    }
}

Далее добавляем поле field_fetchcoordinates в менеджере полей (тип поля text_code) и вставляем туда код:
Код:
                                                                     
                                                                     
                                                                     
                                             
<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());

//Custom function for fetchng tiles from OSM server
CustomGetTileUrl=function(a,b){
return 'http://a.tile.openstreetmap.org/'+b+'/'+a.x+'/'+a.y+'.png';
}

var copyright = new GCopyright(1,

new GLatLngBounds(new GLatLng(53.8136257,-3.0981445),

new GLatLng(53.8654855,-2.9663944) ), 17, "");

var copyrightCollection = new GCopyrightCollection('');

copyrightCollection.addCopyright(copyright);


var tilelayers = [new GTileLayer(copyrightCollection,1,17)];

tilelayers[0].getTileUrl = CustomGetTileUrl;


var osmmap = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "OSM");

map.addMapType(osmmap);
 
  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.setCenter(new GLatLng(longitude,latitude), zoomlevel, osmmap);
 
    GEvent.addListener(map, 'click',
        function(overlay, point) {
            if (point) {
                document.getElementById('field_latitude').value = point.y;
                document.getElementById('field_longitude').value = point.x;
            }
        }
    );   
//]]>
</script>
Теперь создаём поля "широта (field_latitude)" "Долгота (field_longitude)". И пробуем!

Данный скрипт я позже немного модифицировал, теперь в форме добавления при выборе посёлка карта автоматически отображает это посёлок.
Записан
 
marozz1k
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 307



« Ответ #1 : 14.05.2011, 12:21:38 »

Очень нужны эти карты, но не выходит. Яндекс карты как-то сразу заработали а с этими вообще всё перепробывал, делал как вы написали, вот эффект
Записан
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« Ответ #2 : 14.05.2011, 13:11:17 »

А при добавлении в каталог карта отображается? Если да то проблему надо искать в файле enty.functions.php.
И еще возможно вы не получили Google maps API-key. Его нужно ввести в настройках компонента.
Записан
marozz1k
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 307



« Ответ #3 : 14.05.2011, 15:27:24 »

я не понял что такое "при добавлении в каталог" я SOBI2 установил 2 дня назад, еще не разбирался особо, API-key получил ввёл, так что не изза него. В entry.functions.php я нашел где начинается функция Google , выделил до конца файла и заменил вашей.  Попробуйте если не сложно http://33strausa.ru/index.php/sobi2.html
« Последнее редактирование: 14.05.2011, 15:33:19 от marozz1k » Записан
marozz1k
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 307



« Ответ #4 : 14.05.2011, 15:36:26 »

код файла entry.function.php
Показать текстовый блок

поле field_fetchcoordinates всё правильно сделал. проверил




// Под спойлер убирайте большой код
« Последнее редактирование: 14.05.2011, 16:18:09 от SyncMaster » Записан
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« Ответ #5 : 15.05.2011, 16:21:13 »

Найди исходный entry.functions.php и глянь до конца ли идет код функции Google. Я сейчас не имею возможности глянуть ориг. файл. Предпологаю что ты мог при замене удалить нужный код.
Записан
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« Ответ #6 : 15.05.2011, 16:26:05 »

И ещё, щас смотрел на твой сайт через FireBug код карты отображается но русские слова в вопросиках, так что прекодируй entry.functions.php в utf-8 ("notepad++" тебе в помощь), и перепроверь все ли поля ты создал, если да то отредактируй все записи и отметь на карте точки.
Записан
marozz1k
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 307



« Ответ #7 : 15.05.2011, 16:50:14 »

до конца функция вроде идет, вот оригинальный ...
Показать текстовый блок
блин я вообще не понимаю че делать , как отметить точки на карте если её нету? Sad(( перекодировал. так там все файлы в анси оО
И поля проверил, все правильные
« Последнее редактирование: 15.05.2011, 17:05:28 от marozz1k » Записан
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« Ответ #8 : 21.05.2011, 00:04:37 »

Ну даже незаню, эксперементируй!
Записан
marozz1k
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 307



« Ответ #9 : 22.05.2011, 23:32:48 »

а можно не в тему вопрос. Есть ли возможность подключения карт kosmosnimki.ru или нет?
Записан
reg2005
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 9


« Ответ #10 : 23.05.2011, 16:55:13 »

Советую пообщаться со специалистом на которого я сослался в первом посте, я думаю он ответит на ваш вопрос!
Записан
slava-yun
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #11 : 27.12.2011, 19:13:33 »

помогите с прокладкой маршрута
http://citiway.ru/
Записан
disperato
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 21


Разработчик расширений для Joomla 1.7, 2.5


« Ответ #12 : 23.01.2012, 14:11:40 »

помогите с прокладкой маршрута
http://citiway.ru/
Код
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  <title>Google Maps API v3 Directions Example</title>
  <script type="text/javascript"  src="http://maps.google.ru/maps/api/js?sensor=false&language=ru"></script>
</head>
<body style="font-family: Arial; font-size: 12px;">
  <div style="width: 600px;">
    <div id="map" style="width:100%; height: 400px; float: left;"></div>
    <div id="panel" style="width: 100%;" ></div>
  </div>
  <script type="text/javascript">
    var directionsService = new Google.maps.DirectionsService();
    var directionsDisplay = new Google.maps.DirectionsRenderer();
    var map = new Google.maps.Map(document.getElementById('map'), {
      zoom:7,  
      mapTypeId: Google.maps.MapTypeId.ROADMAP
    });
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById('panel'));
    var request = {
       origin: 'Москва',
       destination: 'Санкт-Петербург',
       travelMode: Google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == Google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      }
    });
  </script>
</body>
</html>
 
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet