リーフレットがSQLデータを使用してカスタムアイコンを使用するのに苦労しています。リーフレットのMysqlとカスタムアイコン
私はSQL定義された色を使用するポリゴンを得ているが、私は{icon: }
と同じ方法を使用しようとするたびに、私はvarが働いていないとSQLデータを設定しようと
jQuery.Deferred exception: t.icon.createIcon is not a function TypeError: t.icon.createIcon is not a function
で終わります
var myicon = companies[i]['type']
ただし、ポップアップでcompanies[i]['type']
を呼び出すと正常に動作し、データが表示されます。
データベースでは、フィールドはtype
と呼ばれ、gasIcon
またはdefaIcon
などの文字列としてフォーマットされているため、呼び出されると異なるアイコンに一致します。
ここにマーカーコードがあります。
function addCompanies() {
var TypeIcon = L.Icon.extend({
options: {
shadowUrl: './images/type-shadow.png',
iconSize: [33, 44],
shadowSize: [36, 39],
iconAnchor: [17, 44],
shadowAnchor: [0, 50],
popupAnchor: [-3, -50]
}
});
var gasIcon = new TypeIcon({
iconUrl: './images/gasIcon.png'
}),
ammuIcon = new TypeIcon({
iconUrl: './images/ammuIcon.png'
}),
copsIcon = new TypeIcon({
iconUrl: './images/copsIcon.png'
}),
carsIcon = new TypeIcon({
iconUrl: './images/carsIcon.png'
}),
bankIcon = new TypeIcon({
iconUrl: './images/bankIcon.png'
}),
defaIcon = new TypeIcon({
iconUrl: './images/defaIcon.png'
}),
hospIcon = new TypeIcon({
iconUrl: './images/hospIcon.png'
});
for (var i = 0; i < companies.length; i++) {
var marker = L.marker([
companies[i]['latitude'],
companies[i]['longitude']
],{
icon: companies[i]['type']
}).addTo(map);
marker.bindPopup("<b>" +
companies[i]['company'] + "-" +
companies[i]['type'] +
"</b><br>Details:" +
companies[i]['details'] +
"<br />Telephone: " +
companies[i]['telephone']);
}
}
はicon: companies[i]['type']
が動作しない理由を理解するが、color: areas[i]['color']
しないでください。
多くの方に感謝しておりますが、これは初めての質問ですので、回答を見つけるのに十分な情報を残しておかないと謝罪しますが、必要に応じてさらに投稿します。
何その後、あなたは、このような作業アイコンの参照を取得することができます
:あなたがそうのようなオブジェクトにあなたのアイコンを置くことができ、この問題を解決するには
'companies [i] ['type']'の値は? isは文字列か 'L.Icon'のインスタンスですか? – IvanSanchez
DBに追加するときに選択どのラジオボタンに応じて、 'gasIcon ammuIcon copsIcon carsIcon文字列として格納されているすべてが defaIcon' bankIcon hospIconすることができます。 – Vance