---
title: "rg_googlemap pin-position"
url: "https://www.typo3.net/d/84068-rg-googlemap-pin-position"
source: "typo3.net"
tags: ["Extensions","Frage"]
created: "2008-11-17"
last_reply: "2008-11-19"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# rg_googlemap pin-position

Extensions · 3 Antworten · gestartet 2008-11-17

## Eröffnungsbeitrag

**McGregor** · 2008-11-17 · [Beitrag #1](https://www.typo3.net/d/84068-rg-googlemap-pin-position/1)

Hallo!

Ich bin ja restlos begeistert von der rg_googlemap. Super Sache.
Doch auch hier hackt es mal wieder ...
Den Pin für die Adresse bezieht die Ext aus der Kategorie, der ich die Adressen zuordne.
Soweit so gut. Mein "Pin" hat jedoch die Nadel in der Mitte unten. Die Ext geht aber scheinbar von oben links aus. Wie kann ich nun meinen Pin relativ in der Karte verschieben, dass die Nadel des Pins über dem eigentlichen Ort liegt (quasi einen Offset angeben)

Danke
McGregor

## Antworten

### [#2](https://www.typo3.net/d/84068-rg-googlemap-pin-position/2) · Mopps · 2008-11-18

hast du mal in res/gm.js oder gm2.js geschaut. Vielleicht kannst du da was anpassen.

Ansonsten nimmt die extension glaub den Mittelpunkt deines Icons und setzt diesen Mittelpunkt auf die exakte Position. Du könntest also auch als Alternative dein Icon dementsprechend anpassen.
(du musst der extension noch die veränderten Masse mitteilen)

### [#3](https://www.typo3.net/d/84068-rg-googlemap-pin-position/3) · McGregor · 2008-11-18

Hi!

Danke für den Anstoß.

Zuerst habe ich die Extension um 2 Eingabefelder bei der Kategorie erweitert:
tca.php:

```php
		"left_offset" => Array (		
			"exclude" => 1,		
			"label" => "Left offset",		
			"config" => Array (
				"type" => "input",	
				"size" => "5",
				"eval" => "int",
				'range' => array('lower' => 0,'upper' => 100),
			)
		),

		"top_offset" => Array (		
			"exclude" => 1,		
			"label" => "Top offset",		
			"config" => Array (
				"type" => "input",	
				"size" => "5",
				"eval" => "int",
				'range' => array('lower' => 0,'upper' => 100),
			)
		),


[.......]

    "types" => Array (
        "0" => Array("showitem" => "hidden;;1;;1-1-1, title, descr, parent_uid, image;;2,tabprefix")
    ),
    "palettes" => Array (
        "1" => Array("showitem" => ""),
				"2" => Array("showitem" => "left_offset,top_offset")
    )
```

Nicht vergessen die Datenbank-Spalten einzufügen (INT DEFAULT 0)

Danach habe ich die class.tx_rggooglemap_pi1.php geändert:

```php
  function xmlFunc($content,$conf) {
/********** vorher ***************/
      // category image
      $table = 'tx_rggooglemap_cat';
      $field = 'uid,';
      $where = 'deleted = 0 AND hidden=0 ';
      $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($field,$table,$where,$groupBy='',$orderBy,$limit='');
      while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
        if ($row['image']=='') {
          // get image of parent category
          $whereTemp = 'deleted = 0 AND hidden=0 AND uid = '.$row['parent_uid'];
          $res2 = $GLOBALS['TYPO3_DB']->exec_SELECTquery($field,$table,$whereTemp);
          $row2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2);
          $catImg[$row['uid']] = $row2['image'];
        } else {
          $catImg[$row['uid']] = $row['image'];
        }
      }


/********** nachher ***************/
      // category image
      $table = 'tx_rggooglemap_cat';
      $field = '*';
      $where = 'deleted = 0 AND hidden=0 ';
      $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($field,$table,$where,$groupBy='',$orderBy,$limit='');
      while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
        if ($row['image']=='') {
          // get image of parent category
          $whereTemp = 'deleted = 0 AND hidden=0 AND uid = '.$row['parent_uid'];
          $res2 = $GLOBALS['TYPO3_DB']->exec_SELECTquery($field,$table,$whereTemp);
          $row2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2);
          $catImg[$row['uid']] = $row2['image'];
					$leftOffset[$row['uid']] = $row2['left_offset'];
					$topOffset[$row['uid']] = $row2['top_offset'];
        } else {
          $catImg[$row['uid']] = $row['image'];
					$leftOffset[$row['uid']] = $row['left_offset'];
					$topOffset[$row['uid']] = $row['top_offset'];
        }
      }
/*******************************************/


/********** vorher ***************/
          $catDivider = strpos($row['rggmcat'],',');
          if ($catDivider == false) {
            if (!$catImg[$row['rggmcat']]) {
              if (!file_exists('uploads/tx_rggooglemap/dot.png')) {
                copy($this->conf['defaultPOIIcon'],'uploads/tx_rggooglemap/dot.png');
              }
              $catImg[$row['rggmcat']] = 'dot.png';
            
            }          
          	$img = $catImg[$row['rggmcat']];
          	#
          } else {
            $firstCat = substr($row['rggmcat'],0,$catDivider);
            $img = $catImg[$firstCat];
          }
          
          $test = '';
  
        
  #          $conf['recursive'] = 2;


          $this->addRecord($table, $row,$conf, $img,$test);
/********** nachher ***************/
          $catDivider = strpos($row['rggmcat'],',');
          if ($catDivider == false) {
            if (!$catImg[$row['rggmcat']]) {
              if (!file_exists('uploads/tx_rggooglemap/dot.png')) {
                copy($this->conf['defaultPOIIcon'],'uploads/tx_rggooglemap/dot.png');
              }
              $catImg[$row['rggmcat']] = 'dot.png';
            
            }          
          	$img = $catImg[$row['rggmcat']];
						$leftOff = $leftOffset[$row['rggmcat']];
						$topOff = $topOffset[$row['rggmcat']];
          	#
          } else {
            $firstCat = substr($row['rggmcat'],0,$catDivider);
            $img = $catImg[$firstCat];
						$leftOff = $leftOffset[$firstCat];
						$topOff = $topOffset[$firstCat];
          }
          $test = '';
  
        
  #          $conf['recursive'] = 2;
					// Bildgröße ermitteln
					unset($info);
					$info = getimagesize('uploads/tx_rggooglemap/'.$img);
					$row['image_width'] = $info[0];
					$row['image_height'] = $info[1];

					$row['left_offset'] = $leftOff;
					$row['top_offset'] = $topOff;

          $this->addRecord($table, $row,$conf, $img,$test);
/*******************************************/


-----------------------------------------------------

  function addRecord($table, $row,$conf, $img,$test) {  
/* Zeile 1659 geändert in */
  $this->lines[]=$this->Icode.'<marker image_height="'.$row['image_height'].'" image_width="'.$row['image_width'].'" top_offset="'.$row['top_offset'].'" left_offset="'.$row['left_offset'].'" cat="'.$row['rggmcat'].'"  uid="'.$row["uid"].'" lng="'.$row['lng'].'" lat="'.$row['lat'].'"  img="'.$img.'" table="'.$row['table'].'" test="'.$test.'" >';
```

Dann habe ich die gm.js angepasst, indem ich folgende Zeile einfach entfernt habe:

```javascript
var baseIcon = new GIcon();
//baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(16, 16);
//baseIcon.shadowSize = new GSize(37, 34);
//baseIcon.iconAnchor = new GPoint(5, 8-);
baseIcon.iconAnchor = new GPoint(8, 8-);
baseIcon.infoWindowAnchor = new GPoint(32, 32);
baseIcon.infoShadowAnchor = new GPoint(80, 25);
baseIcon.transparent = "http://www.google.com/mapfiles/markerTransparent.png";
```

Dann nochmals in der class.tx_rggooglemap_pi1.php folgende Änderungen:

```php
function getXMLData(clearOverlay) {
/********** vorher ************/

      for (var i = 0; i < markers.length; i++) {
        // obtain the attribues of each marker
        var lat = parseFloat(markers[i].getAttribute("lat"));
        var lng = parseFloat(markers[i].getAttribute("lng"));
        var point = new GLatLng(lat,lng);
        var title = [GXml.value(markers[i].getElementsByTagName("t")[0]) ];
        var id = parseFloat(markers[i].getAttribute("uid"));
        var table = markers[i].getAttribute("table");
        var img = markers[i].getAttribute("img");
        
        marker = createMarker(point, id, img, title, table);
clusterer.RemoveMarker( marker );

        if (!gmarkers[id]) {
          gmarkers[id] = marker;          
          //clusterer.AddMarker(marker,title);
          
          '.$addMarker.'
        } 
        
      }     

/******************* nachher ********************/
      for (var i = 0; i < markers.length; i++) {
        // obtain the attribues of each marker
        var lat = parseFloat(markers[i].getAttribute("lat"));
        var lng = parseFloat(markers[i].getAttribute("lng"));
				var l_off = parseFloat(markers[i].getAttribute("left_offset"));
				var t_off = parseFloat(markers[i].getAttribute("top_offset"));
				var width = parseFloat(markers[i].getAttribute("image_width"));
				var height = parseFloat(markers[i].getAttribute("image_height"));
        var point = new GLatLng(lat,lng);
        var title = [GXml.value(markers[i].getElementsByTagName("t")[0]) ];
        var id = parseFloat(markers[i].getAttribute("uid"));
        var table = markers[i].getAttribute("table");
        var img = markers[i].getAttribute("img");
        
        marker = createMarker(point, id, img, title, table,l_off,t_off,width,height);
clusterer.RemoveMarker( marker );

        if (!gmarkers[id]) {
          gmarkers[id] = marker;          
          //clusterer.AddMarker(marker,title);
          
          '.$addMarker.'
        } 
        
      }
```

und zu guter letzt in selber Datei

```php
function createMarker(point, id, img, title,table,l_off,t_off,width,height) {
// kein BaseIcon verwenden
//  var icon = new GIcon(baseIcon);
	var icon = new GIcon();
	icon.iconSize = new GSize(width, height);
	icon.iconAnchor = new GPoint(l_off, t_off);
	icon.infoWindowAnchor = new GPoint(32, 32);
	icon.infoShadowAnchor = new GPoint(8, 8-);
	icon.transparent = "http://www.google.com/mapfiles/markerTransparent.png";
```

Sooo...
Ganz schön harter Tobak. Vielleicht hilft es einem.
Vielleicht nimmt Georg diese Abwandlungen, um die Extension zu updaten :-)

Grüße
McGregor

P.S. Mit diesen Änderungen kann das Bild dynamisch geändert und die Position angepasst werden.

### [#4](https://www.typo3.net/d/84068-rg-googlemap-pin-position/4) · Mopps · 2008-11-19

ui, ganz schon in der Extension rummgewurschtelt  :)
Vielleicht kannst du Georg ein Mail auf diesen Post schreiben.

Ich hab auch schon recht viel an der Extension geändert. Damit ist leider das Uptdate tabu.

Grüße und danke für das Wissen!

---

Quelle: „rg_googlemap pin-position“, typo3.net, https://www.typo3.net/d/84068-rg-googlemap-pin-position
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
