调整 Google 地图标记图标图像的大小

IT技术 javascript google-maps google-maps-markers image-resizing
2021-03-01 17:25:48

当我将图像加载到标记的图标属性中时,它会以其原始大小显示,比应有的大小要大得多。

我想将标准调整为较小的尺寸。做这个的最好方式是什么?

代码:

function addMyPos(latitude,longitude){
  position = new google.maps.LatLng(latitude,longitude)
  marker = new google.maps.Marker({
    position: position,
    map: map,
    icon: "../res/sit_marron.png"
  });
}
6个回答

如果原始尺寸为 100 x 100 并且您想将其缩放到 50 x 50,请使用 scaledSize 而不是 Size。

var icon = {
    url: "../res/sit_marron.png", // url
    scaledSize: new google.maps.Size(50, 50), // scaled size
    origin: new google.maps.Point(0,0), // origin
    anchor: new google.maps.Point(0, 0) // anchor
};

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(lat, lng),
    map: map,
    icon: icon
});
这是在 API v3 下的做法。
2021-04-30 17:25:48
一定要摆弄锚点,使图标与位置正确对齐。
2021-05-04 17:25:48
scaledSize而不是scale= 爱
2021-05-20 17:25:48

正如评论中提到的,这是支持带有文档的 Icon 对象的更新解决方案。

使用图标对象

var icon = {
    url: "../res/sit_marron.png", // url
    scaledSize: new google.maps.Size(50, 50), // scaled size
    origin: new google.maps.Point(0,0), // origin
    anchor: new google.maps.Point(0, 0) // anchor
};

 posicion = new google.maps.LatLng(latitud,longitud)
 marker = new google.maps.Marker({
  position: posicion,
  map: map,
  icon: icon
 });
这不会调整图像大小,而是裁剪它?
2021-05-01 17:25:48
MarkerImage 已弃用:改用图标对象!
2021-05-07 17:25:48
使用icon object和该scaledSize: new google.maps.Size(h, w)对象上属性
2021-05-07 17:25:48
@RaviRam确实你是对的,谢谢你的更正。
2021-05-14 17:25:48
@SverrirSigmundarson 它不应该是new google.maps.Size(w, h)h,w
2021-05-20 17:25:48

已为 Icon 弃用 MarkerImage

在 Google Maps JavaScript API 3.10 版之前,复杂的图标被定义为 MarkerImage 对象。Icon 对象文字是在 3.10 中添加的,并从 3.11 版本开始替换 MarkerImage。Icon 对象字面量支持与 MarkerImage 相同的参数,允许您通过移除构造函数、将前面的参数包装在 {} 中并添加每个参数的名称来轻松地将 MarkerImage 转换为 Icon。

菲利普的代码现在是:

 var icon = {
     url: "../res/sit_marron.png", // url
     scaledSize: new google.maps.Size(width, height), // size
     origin: new google.maps.Point(0,0), // origin
     anchor: new google.maps.Point(anchor_left, anchor_top) // anchor 
 };

 position = new google.maps.LatLng(latitud,longitud)
 marker = new google.maps.Marker({
  position: position,
  map: map,
  icon: icon
 });
我认为这不会调整图像大小,而是裁剪它。
2021-04-25 17:25:48
你想要scaledSize而不是size.
2021-05-12 17:25:48
是的,同意@bbodenmiller, scaledSize 可能是您正在寻找的那个。对于我的项目,我使用 scaledSize 并且这对我有用。var icon = { url: imageName, scaledSize: new google.maps.Size(8, 12) };
2021-05-19 17:25:48

删除原点和锚点会更规则图片

  var icon = {
        url: "image path", // url
        scaledSize: new google.maps.Size(50, 50), // size
    };

 marker = new google.maps.Marker({
  position: new google.maps.LatLng(lat, long),
  map: map,
  icon: icon
 });
这对我有用!如果我试图在 Marker 代码中设置 scaledImage 参数,它将不起作用。
2021-05-05 17:25:48
有用!2021!!!
2021-05-12 17:25:48

如果你像我一样使用 vue2-google-maps,设置大小的代码如下所示:

<gmap-marker
  ..
  :icon="{
    ..
    anchor: { x: iconSize, y: iconSize },
    scaledSize: { height: iconSize, width: iconSize },
  }"
>