将 KML 图层与 Google 地图 API 配合使用时,将忽略大于 1 的标记比例

Marker scales greater than 1 ignored when using a KML layer with the Google Maps API

本文关键字:大于 Google 图层 KML 地图 API      更新时间:2023-09-26

我们正在使用 Google Maps API 并渲染带有标记的 KML 图层。标记图标不会以大于 1 的比例呈现,即使定义了比例也是如此。如果我使用 geoxml3,则可以进行缩放,但会出现许多其他我宁愿不必处理的问题。这是一个非常简单的 KML,这里有一个相关的样式块:

<Style id="Style1">
  <IconStyle>
    <scale>1.875</scale>
    <Icon>
      <href>https://www.smud.org/assets/images/outage/x-lg.png</href>
    </Icon>
  </IconStyle>
</Style>

这是一个标记(如果有帮助,我可以提供架构 xml):

<Folder>
  <name>map_outages_5000+</name>
  <Placemark>
    <name>5000+</name>
    <styleUrl>#Style1</styleUrl>
    <ExtendedData>
      <SchemaData schemaUrl="#Schema1">
        <SimpleData name="EVENTNUMBER">D16020400019</SimpleData>
        <SimpleData name="AFFECTEDAREA">Executive Airport</SimpleData>
        <SimpleData name="OUTAGEBEGINTIME">02/04/2016 13:49:45</SimpleData>
        <SimpleData name="ESTIMATEDRESTORATIONTIME">02/04/2016 14:50:00</SimpleData>
        <SimpleData name="CUSTOMERSIMPACTED">14906</SimpleData>
        <SimpleData name="OUTAGEDESCRIPTION"></SimpleData>
        <SimpleData name="CALLCOUNT">0</SimpleData>
        <SimpleData name="X_COORD">6699236.5229</SimpleData>
        <SimpleData name="Y_COORD">1946587.0231</SimpleData>
        <SimpleData name="CoordGeocodeStatus"></SimpleData>
      </SchemaData>
    </ExtendedData>
    <Point>
      <coordinates>-121.519315773898,38.5063426658563,30.4334760147827</coordinates>
    </Point>
    <description><![CDATA[<div style="clear:both;color:#231f20;"><p style="font-size:18px;font-weight:bold;text-align:center">Executive Airport</p><div style="clear:both; font-size: 12px;"><p>Occured at </br><b>1:49 PM February 4</b></p></div><div style="clear:both; font-size: 12px;"><p>Est Restoration </br><b>2:50 PM February 4</b></p></div><div style="clear:both; font-size: 12px;"><p>Customers Out </br><b>14906</b></p></div><div style="clear:both; font-size: 12px;"><p>Customer Calls </br><b>0</b></p></div></div><div style="clear:both;"><p style="color:#959595; padding-top: 20px; font-size:12px;text-align:center">Ref # D16020400019</p></div>]]></description>
  </Placemark>
</Folder>

JS的相关块如下:

var activeOutages = new google.maps.KmlLayer({
        url: 'https://sampleurl.com/file.kml',
        zIndex: 2,
        preserveViewport: true,
        map: map
    });

同样,它通常呈现良好,只是没有正确缩放标记。我有 5 种不同的制作器尺寸,它不会渲染大于 32px(或 1 的比例)的任何内容。我看到了另一个问题,有人不小心将他们的比例属性设置得太大,并且使其过大。所以这似乎是可能的,我希望我只是缺少图层对象中的设置。我在文档中没有看到任何关于不支持大于 1 的比例的任何内容,并且一个示例使用 1.1 的比例,这意味着应该可以更大。

任何帮助都会很棒。谢谢。

问题跟踪器中的相关问题:问题 2444:使用图标小于 32x32 像素的 KML 图层(自 2013 年 2 月 13 日起)。

表明:

支持 KML 比例标签,但目前实现为"32x32"最终图标的比例,即您提供的图标图像将首先调整为 32x32(保留纵横比),无论其原始大小如何。然后应用其有效值只能介于 (0,1] 之间的刻度标记。例如,64x64 png 图像的 0.5 将生成 16x16 地图图标。