Ответ 1
Этот ответ излагает полезный ответ Джона Блэка, поэтому я повторю часть своего ответа в своем ответе.
Самый простой способ изменить размер маркера, похоже, оставляет аргумент 2, 3 и 4 нулем и масштабирует размер в аргументе 5.
var pinIcon = new google.maps.MarkerImage(
"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|FFFF00",
null, /* size is determined at runtime */
null, /* origin is 0,0 */
null, /* anchor is bottom center of the scaled image */
new google.maps.Size(42, 68)
);
Как вариант, этот ответ по аналогичному вопросу утверждает, что определение размера маркера во втором аргументе лучше, чем масштабирование в 5-м аргументе. Я не знаю, верно ли это.
Оставшиеся аргументы 2-4 null отлично подходят для изображения по умолчанию google, но вы должны явно установить якорь для изображения теней по умолчанию google, или оно будет выглядеть так:
Нижний центр пин-изображения оказывается совмещенным с кончиком штифта, когда вы просматриваете графику на карте. Это важно, поскольку свойство позиции маркера (маркер LatLng позиция на карте) будет автоматически совмещаться с визуальным концом булавки, когда вы оставляете якорь (4-й аргумент) null
. Другими словами, оставляя якорный нуль, он обеспечивает точки наконечника, где он должен указывать.
Однако кончик тени не расположен в центре снизу. Таким образом, вам нужно явно задать 4-й аргумент, чтобы компенсировать наконечник тени, чтобы наконечник тени был помещен в контакт с кончиком пин-изображения.
Экспериментируя, я обнаружил, что кончик тени должен быть установлен следующим образом: x составляет 1/3 от размера, а y - 100% от размера.
var pinShadow = new google.maps.MarkerImage(
"http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
null,
null,
/* Offset x axis 33% of overall size, Offset y axis 100% of overall size */
new google.maps.Point(40, 110),
new google.maps.Size(120, 110));
чтобы дать следующее: