1

を宣言し、他のライブラリと併用する場合Googleのワンタップライブラリは、エラーが発生することは、グローバル変数を宣言しているためL.Googleのワンタップがグローバル変数L

私は縮小さのコードでこれを見たが、私は確かに何もありませんよやっている。

私はパッチを提出するGoogleのワンタップコードのオープンソースプロジェクトを見つけることができませんまた、グローバルL https://github.com/Leaflet/Leaflet

を定義LeafletJSのような他のライブラリと競合

var L = 0; 
function K(g) { 
    return "jscomp_symbol_" + (g || "") + L++ 
} 

。これを回避するにはどうしたらいいですか?

+2

これはGoogleのリリースプロセスのバグです。それはIIFEで包まれるべきです。 – SLaks

+1

コードはhttps://github.com/openid/OpenYOLO-Web – SLaks

+0

から入手しています。現在、バグを修正しています。 – TMSCH

答えて

1

私はこのライブラリのGoogleのプロダクトマネージャーです。これは今修正する必要があります。申し訳ありませんが、忍耐のためにありがとうございます。

2

Google One-tapファイルでバグが修正されるまで、LeafletのnoConflictモードを使用して、他のグローバル変数名にLeafletを再割り当てしてGoogleライブラリで使用されないようにすることができます。後者は縮小されたファイルなので、ほとんどの変数と関数は1文字または2文字の長さになります。

// Should actually be BELOW the HTML part, 
 
// but SO insists on displaying the JS part first. 
 

 
var map = Leaflet.map("map").setView([48.86, 2.35], 12); 
 

 
Leaflet.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
 
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' 
 
}).addTo(map);
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"> 
 
<script src="https://unpkg.com/[email protected]/dist/leaflet-src.js"></script> 
 

 
<script> 
 
    // Re-assign L from Leaflet to any other global variable, and avoid conflict 
 
    // with other libraries, like Google One-tap in this case. 
 
    var Leaflet = L.noConflict(); 
 
</script> 
 

 
<script src="https://smartlock.google.com/client"></script> 
 

 
<div id="map" style="height: 200px;"></div>

+0

ありがとう@ghybs!残念ながら、私たちは[Leaflet.markercluster](https://github.com/Leaflet/Leaflet.markercluster)を含む複数のリーフレットライブラリを使用しています。そのライブラリはwindow.Lを探していますので、リーフレットのライブラリを保存することが効果的かどうかわかりません。助言がありますか? – derricki