public function icon($url, array $options = []) {
		// The shadow image is larger in the horizontal dimension
		// while the position and offset are the same as for the main image.
		if (empty($options['size'])) {
			// We will deprecate this in the future maybe as this is super slow!
			//trigger_error('Please specify size manually [width => ..., height => ...] for performance reasons.', E_USER_DEPRECATED);
			$path = $url;
			if (!preg_match('#^((https?://)|//)#i', $path)) {
				// This should also be avoided but is still way faster than the URL lookup.
				$path = WWW_ROOT . ltrim($url, '/');
			}

			$data = getimagesize($path);
			if ($data) {
				$options['size']['width'] = $data[0];
				$options['size']['height'] = $data[1];
			} else {
				$options['size']['width'] = $options['size']['height'] = 0;
			}
		}
		if (empty($options['anchor'])) {
			$options['anchor']['width'] = (int)($options['size']['width'] / 2);
			$options['anchor']['height'] = $options['size']['height'];
		}
		if (empty($options['origin'])) {
			$options['origin']['width'] = $options['origin']['height'] = 0;
		}
		if (isset($options['shadow'])) {
			$options['anchor'] = $options['shadow'];
		}

		$icon = 'new google.maps.MarkerImage("' . $url . '",
	new google.maps.Size(' . $options['size']['width'] . ', ' . $options['size']['height'] . '),
	new google.maps.Point(' . $options['origin']['width'] . ', ' . $options['origin']['height'] . '),
	new google.maps.Point(' . $options['anchor']['width'] . ', ' . $options['anchor']['height'] . ')
)';
		$this->icons[static::$iconCount] = $icon;
		$this->_iconRemember[static::$iconCount] = ['url' => $url, 'options' => $options, 'id' => static::$iconCount];
		return static::$iconCount++;
	}
public function icon($url, array $options = []) {
		// The shadow image is larger in the horizontal dimension
		// while the position and offset are the same as for the main image.
		if (empty($options['size'])) {
			// We will deprecate this in the future maybe as this is super slow!
			//trigger_error('Please specify size manually [width => ..., height => ...] for performance reasons.', E_USER_DEPRECATED);
			$path = $url;
			if (!preg_match('#^((https?://)|//)#i', $path)) {
				// This should also be avoided but is still way faster than the URL lookup.
				$path = WWW_ROOT . ltrim($url, '/');
			}

			$data = getimagesize($path);
			if ($data) {
				$options['size']['width'] = $data[0];
				$options['size']['height'] = $data[1];
			} else {
				$options['size']['width'] = $options['size']['height'] = 0;
			}
		}
		if (empty($options['anchor'])) {
			$options['anchor']['width'] = (int)($options['size']['width'] / 2);
			$options['anchor']['height'] = $options['size']['height'];
		}
		if (empty($options['origin'])) {
			$options['origin']['width'] = $options['origin']['height'] = 0;
		}
		if (isset($options['shadow'])) {
			$options['anchor'] = $options['shadow'];
		}

		$icon = 'new google.maps.MarkerImage("' . $url . '",
	new google.maps.Size(' . $options['size']['width'] . ', ' . $options['size']['height'] . '),
	new google.maps.Point(' . $options['origin']['width'] . ', ' . $options['origin']['height'] . '),
	new google.maps.Point(' . $options['anchor']['width'] . ', ' . $options['anchor']['height'] . ')
)';
		$this->icons[static::$iconCount] = $icon;
		$this->_iconRemember[static::$iconCount] = ['url' => $url, 'options' => $options, 'id' => static::$iconCount];
		return static::$iconCount++;
	}
public function icon ( $ url , array $ options = [ ] ) { // The shadow image is larger in the horizontal dimension // while the position and offset are the same as for the main image. if ( empty ( $ options [ 'size' ] ) ) { // We will deprecate this in the future maybe as this is super slow! //trigger_error('Please specify size manually [width => ..., height => ...] for performance reasons.', E_USER_DEPRECATED); $ path = $ url ; if ( ! preg_match ( '#^((https?://)|//)#i' , $ path ) ) { // This should also be avoided but is still way faster than the URL lookup. $ path = WWW_ROOT . ltrim ( $ url , '/' ) ; } $ data = getimagesize ( $ path ) ; if ( $ data ) { $ options [ 'size' ] [ 'width' ] = $ data [ 0 ] ; $ options [ 'size' ] [ 'height' ] = $ data [ 1 ] ; } else { $ options [ 'size' ] [ 'width' ] = $ options [ 'size' ] [ 'height' ] = 0 ; } } if ( empty ( $ options [ 'anchor' ] ) ) { $ options [ 'anchor' ] [ 'width' ] = ( int ) ( $ options [ 'size' ] [ 'width' ] / 2 ) ; $ options [ 'anchor' ] [ 'height' ] = $ options [ 'size' ] [ 'height' ] ; } if ( empty ( $ options [ 'origin' ] ) ) { $ options [ 'origin' ] [ 'width' ] = $ options [ 'origin' ] [ 'height' ] = 0 ; } if ( isset ( $ options [ 'shadow' ] ) ) { $ options [ 'anchor' ] = $ options [ 'shadow' ] ; } $ icon = 'new google.maps.MarkerImage("' . $ url . '",
	new google.maps.Size(' . $ options [ 'size' ] [ 'width' ] . ', ' . $ options [ 'size' ] [ 'height' ] . '),
	new google.maps.Point(' . $ options [ 'origin' ] [ 'width' ] . ', ' . $ options [ 'origin' ] [ 'height' ] . '),
	new google.maps.Point(' . $ options [ 'anchor' ] [ 'width' ] . ', ' . $ options [ 'anchor' ] [ 'height' ] . ')
)' ; $ this -> icons [ static :: $ iconCount ] = $ icon ; $ this -> _iconRemember [ static :: $ iconCount ] = [ 'url' => $ url , 'options' => $ options , 'id' => static :: $ iconCount ] ; return static :: $ iconCount ++ ; }
Generate icon object

@param string $url (required)
@param array $options (optional):
- size: array(width=>x, height=>y)
- origin: array(width=>x, height=>y)
- anchor: array(width=>x, height=>y)
@return int Icon count
Generate icon object