Пользовательские значки маркеров карты с динамически генерируемыми числами - PullRequest
2 голосов
/ 24 июня 2011

Я хочу иметь пронумерованные маркеры карт для своих карт Google, и в настоящее время я использую метод Google Charts API для динамического создания пронумерованных маркеров. Однако я не могу использовать мои собственные иконки с этим методом.

Есть ли способ использовать мои собственные значки маркеров карты, а затем накладывать / иметь число поверх них?

В качестве альтернативы, существует ли быстрый способ создания 1000 маркеров .PNG с номером от 1 до 1000? Как пакетный процесс в Photoshop

Ответы [ 2 ]

5 голосов
/ 24 июня 2011

Я позаимствовал этот код из написанной статьи и немного подправил его.Вам следует скачать это изображение , немного отредактировать его в Photoshop и поместить в тот же каталог, что и скрипт PHP.Изменяйте числа в скрипте, пока не получите что-то приличное.

<?php
define("FONT_SIZE", 6);                            // font size in points
define("FONT_PATH", "c:/windows/fonts/arial.ttf"); // path to a ttf font file
define("FONT_COLOR", 0x00000000);                  // 4 byte color
                                                   // alpha  -- 0x00 thru 0x7F; solid thru transparent
                                                   // red    -- 0x00 thru 0xFF
                                                   // greeen -- 0x00 thru 0xFF
                                                   // blue -- 0x00 thru 0xFF
$text = $_GET["text"];
$gdimage = imagecreatefrompng("marker.png");
imagesavealpha($gdimage, true);
list($x0, $y0, , , $x1, $y1) = imagettfbbox(FONT_SIZE, 0, FONT_PATH, $text);
$imwide = imagesx($gdimage);
$imtall = imagesy($gdimage) - 14;                  // adjusted to exclude the "tail" of the marker
$bbwide = abs($x1 - $x0);
$bbtall = abs($y1 - $y0);
$tlx = ($imwide - $bbwide) >> 1; $tlx -= 1;        // top-left x of the box
$tly = ($imtall - $bbtall) >> 1; $tly -= 1;        // top-left y of the box
$bbx = $tlx - $x0;                                 // top-left x to bottom left x + adjust base point
$bby = $tly + $bbtall - $y0;                       // top-left y to bottom left y + adjust base point
imagettftext($gdimage, FONT_SIZE, 0, $bbx, $bby, FONT_COLOR, FONT_PATH, $text);
header("Content-Type: image/png");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 60 * 60 * 24 * 180) . " GMT");
imagepng($gdimage);
?>

Пример вывода в моей системе:

/marker.php?text=9 /marker.php?text=99 /marker.php?text=999 /marker.php?text=AA

1 голос
/ 16 ноября 2011

Теперь вы можете сделать это с помощью Google Charts.Вот пример синтаксиса:

(scale|rotation|color|fontsize|bold(b) or normal(_)|text[|line2]
https://chart.googleapis.com/chart?chst=d_map_spin&chld=1.0|0|FF8844|12|_|221B

Вот документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...