Google Maps JS API 中的虚线折线未在 iOS 上显示

Dotted Polyline in Google Maps JS API not displaying on iOS

我正在使用 o运行ge 点折线来显示前几天的路线。

但我 运行 遇到 iOS 设备上不显示虚线折线的问题。

CodePen 示例:(带有 o运行ge 点路径)

https://codepen.io/Fkinart/pen/poEMBgy

let decoded_polyline = google.maps.geometry.encoding.decodePath(polyline);

let line_style = {
    path: "M 0,1 0,1",
    strokeColor: '#F5A623',
    strokeWeight: 6,
    strokeOpacity: 1,
    scale: 4,
};

prev_days_path = new google.maps.Polyline({
    path: decoded_polyline,
    strokeOpacity: 0,
    icons: [
        {
            icon: line_style,
            offset: '0',
            repeat: '10px',
        },
    ],
});
prev_days_path.setMap(exp[day].map);

示例:

M 0,1 0,1 似乎不是有效路径...

我不知道 how/why 它可以在桌面上运行,但我认为以下片段证明了我的意思:

<svg height="210" width="400">
  <path d="M 0,1 0,1" />
  Sorry, your browser does not support inline SVG.
</svg>

如您所见,没有显示任何内容...

如果我将 google.maps.SymbolPath.CIRCLE 用于 path,它对我有用(在桌面和 iOS 上)。

function initialize() {
  // Map init
  let map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: {
      lat: 30.803713,
      lng: -98.02602,
    },
    zoom: 5,
  });

  // Previous days polyline
  let polyline = '}i{fEb`moQbB_HqU}E_a@mQeUwG|GdpGoChtXdRr}Dzc@pfAjMrpB~Mn|C|KpvA`}@j{C|J|gE_SbsHsKreGflBteHy@feF}`@d~Bo_@ldFoqCtpNbdB`_J|hAbzGcEb`KzN`oC|p@n}CvzB~aJ|`AxwDn_BnpCz_G`wH|fCrrFtqD~gGny@lxDpVhlH`{EjqP~sBh_I~i@xaH\|pDlNzdDha@hwJln@poAlz@loH|{@fjEzeAdiAh]rqAryBxzH`aCt|FhM`sBb|@vjCbpAzhArj@hgAxk@~vCN|sGNtsLEtmNsDphMwTvsGpg@leFfGdeGuiAr`KqcAdkM}j@jfDkKruF}cAzzNm}BtnUwo@lvDulCtdE_eC~dEcThlC|`@r|Cd|@bbE`pAfcGrMtxEb@pxJgi@bvHkt@dvB}PhaBfXbuByp@fxHyo@r~Dmd@n~@vAxgBx}@raJk_@~bD_Ob~DeTrsAhJjkCv`@`_G|k@zkEfqCjhCdn@fl@lSd~Bwc@xvHvk@h}Gwz@vfDfEvnCkwB|kHq_B|oC{`Fr{EuaFdwFewDtbDe~HxhFchBz_B}eBdmC}`AnkFw|AziEomArmBiSr|Es`ArcGcKnoRwf@drL_n@|dHs{BpcPmf@`oH}O~kKdTr`Ksd@np@~OnpGhs@jaXj_AblH~tA~eGaPx|@rf@`|DpqC`vS~_AjvHaSxi@rGdxAvZl`Axi@bt@la@p~Cdf@dtDon@jXuh@vKiwBhd@qHoE`CfGxu@aPdjBc`@fv@_PuPopAcf@qtD_YymBog@{`EwpD{`XgkAaxIbDo`Byz@kgDibA{{Hsk@wcL_p@syUnd@_s@wE}|B{AaeQxrAabPp}BcnRjo@qqKzHgpOnEsaG|{@_sDzHkfEbtA}jC_Jgv@lLe[jcAmn@nZwcAlw@edFlgD{zElfJcfGz`FelExuGgpHlpCadCf{AqgCteCw_JqPkbBdRw`Abk@guBap@ahGvc@czHiR}{B_]gc@qiCkyBix@saDma@gqDcWsaHnf@mlD|LwnDnMa_Bgj@mfFuTmsEb|@mpBzeAmpNmRo`Blj@e|Bxd@i|Cl`@stF{@uoLuLwkCke@qmCcvAgkGus@ysCbMi}DfxFscJlr@opAvUklBj{AmkO|uAykPn[ieGc@ieC`a@i{Btl@i{Etb@i`H|`@}oDfv@ygJcc@efFqSi_DrOgjErGc_Fr@i~GJ{tLWk}OAi~Coc@saE}p@{bBqpAsfAmgAavD}ZwbCssBc{Eqx@au@y^cT';

  let decoded_polyline = google.maps.geometry.encoding.decodePath(polyline);

  // Draw a orange dotted path
  let line_style = {
    path: google.maps.SymbolPath.CIRCLE,
    fillOpacity: 1,
    scale: 3
  };

  prev_days_path = new google.maps.Polyline({
    path: decoded_polyline,
    strokeColor: '#F5A623',
    strokeOpacity: 0,
    fillOpacity: 0,
    icons: [{
      icon: line_style,
      offset: '0',
      repeat: '10px',
    }, ],
  });
  prev_days_path.setMap(map);
}
#map-canvas {
  height: 150px;
}
<div id="map-canvas"></div>

<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=geometry&callback=initialize" async defer></script>

如果我使用有效路径,它也有效:

function initialize() {
  // Map init
  let map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: {
      lat: 30.803713,
      lng: -98.02602,
    },
    zoom: 5,
  });

  // Previous days polyline
  let polyline = '}i{fEb`moQbB_HqU}E_a@mQeUwG|GdpGoChtXdRr}Dzc@pfAjMrpB~Mn|C|KpvA`}@j{C|J|gE_SbsHsKreGflBteHy@feF}`@d~Bo_@ldFoqCtpNbdB`_J|hAbzGcEb`KzN`oC|p@n}CvzB~aJ|`AxwDn_BnpCz_G`wH|fCrrFtqD~gGny@lxDpVhlH`{EjqP~sBh_I~i@xaH\|pDlNzdDha@hwJln@poAlz@loH|{@fjEzeAdiAh]rqAryBxzH`aCt|FhM`sBb|@vjCbpAzhArj@hgAxk@~vCN|sGNtsLEtmNsDphMwTvsGpg@leFfGdeGuiAr`KqcAdkM}j@jfDkKruF}cAzzNm}BtnUwo@lvDulCtdE_eC~dEcThlC|`@r|Cd|@bbE`pAfcGrMtxEb@pxJgi@bvHkt@dvB}PhaBfXbuByp@fxHyo@r~Dmd@n~@vAxgBx}@raJk_@~bD_Ob~DeTrsAhJjkCv`@`_G|k@zkEfqCjhCdn@fl@lSd~Bwc@xvHvk@h}Gwz@vfDfEvnCkwB|kHq_B|oC{`Fr{EuaFdwFewDtbDe~HxhFchBz_B}eBdmC}`AnkFw|AziEomArmBiSr|Es`ArcGcKnoRwf@drL_n@|dHs{BpcPmf@`oH}O~kKdTr`Ksd@np@~OnpGhs@jaXj_AblH~tA~eGaPx|@rf@`|DpqC`vS~_AjvHaSxi@rGdxAvZl`Axi@bt@la@p~Cdf@dtDon@jXuh@vKiwBhd@qHoE`CfGxu@aPdjBc`@fv@_PuPopAcf@qtD_YymBog@{`EwpD{`XgkAaxIbDo`Byz@kgDibA{{Hsk@wcL_p@syUnd@_s@wE}|B{AaeQxrAabPp}BcnRjo@qqKzHgpOnEsaG|{@_sDzHkfEbtA}jC_Jgv@lLe[jcAmn@nZwcAlw@edFlgD{zElfJcfGz`FelExuGgpHlpCadCf{AqgCteCw_JqPkbBdRw`Abk@guBap@ahGvc@czHiR}{B_]gc@qiCkyBix@saDma@gqDcWsaHnf@mlD|LwnDnMa_Bgj@mfFuTmsEb|@mpBzeAmpNmRo`Blj@e|Bxd@i|Cl`@stF{@uoLuLwkCke@qmCcvAgkGus@ysCbMi}DfxFscJlr@opAvUklBj{AmkO|uAykPn[ieGc@ieC`a@i{Btl@i{Etb@i`H|`@}oDfv@ygJcc@efFqSi_DrOgjErGc_Fr@i~GJ{tLWk}OAi~Coc@saE}p@{bBqpAsfAmgAavD}ZwbCssBc{Eqx@au@y^cT';

  let decoded_polyline = google.maps.geometry.encoding.decodePath(polyline);

  // Draw a orange dotted path
  let line_style = {
    path: 'M-5,0a5,5 0 1,0 10,0a5,5 0 1,0 -10,0',
    fillOpacity: 1,
    scale: 1
  };

  prev_days_path = new google.maps.Polyline({
    path: decoded_polyline,
    strokeColor: '#F5A623',
    strokeOpacity: 0,
    fillOpacity: 0,
    icons: [{
      icon: line_style,
      offset: '0',
      repeat: '10px',
    }, ],
  });
  prev_days_path.setMap(map);
}
#map-canvas {
  height: 150px;
}
<div id="map-canvas"></div>

<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=geometry&callback=initialize" async defer></script>

您可以使用this tool根据圆半径生成路径。