spaceの増殖バグ回避について

space内に緯度経度が変わる毎に、地理院地図(OpenLayerを使用)を表示しているのですが、
下記のコードを実行すると、spaceが増殖してしまいます。
※増殖バグ回避のコードを実行しても、正常に表示されません

(function() {
'use strict';

var IdoKido = "";

// 緯度経度を球面メルカトル図法に変換
function convertCoordinate(longitude, latitude) {
return ol.proj.transform([longitude, latitude], 'EPSG:4326', 'EPSG:3857');
}

// マーカーを表示するレイヤーを作成
function makeMarkerOverlay(coordinate) {
var imgElement = document.createElement('img');
var imgSrc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAZCAYAAADe1WXtAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHwSURBVEiJpdW9a9NRFMbxT9qmNWmSRqlFhE6CLuIL1DcUHDqJm/0HBEUk3RQXpW7dXdysWlAEHQSlo4IoIohQKFJQxKWIIlTb5pc2anMdkmBbmleHZ3vul3Pvc865QggaCfu6uIOtTfkbGboYTRIN8yvJd5xoG4psmqk9LH0gBMJTQh+FJOPobAmKo718zbFcrACr+kI4TpThHQYbQhHr4WqG6MkG2FqtEsb5nWQJZ2pCMZDh5RBLc3WAa/WGsIMozV0k1kExnGR+jOKfJoFVLRBGKKT4jL0hBLq51kfhRZ2D04Qblfes5blNKcFynItwYTf5Ug3zc0KyolSlslrgIQpxxiCWYWaC0mbGUUIHASFDeFwD+Kjcbh/RWX3Tw1mixTYrzRP6iXBsXfppHl6m2M6bXqLYx4PNWmpnguhTi+m/L99iEf2bNn8P108RtQI9Qj5Ort5Ebenl27MmgfcoZZhFR93Zx8gu8o2GYIGQLYdzqKmFkuHtTVbrQXOsZJhsZUvtT1P4UQM4/S+cbS3t0xSTOVY2AkuEA+Q7Od/Okt6eID+7ATpRDmcGsba+k26unCRfBc6XRzXCwba+k0q18RRzUxXoOZZT3Kp3piG0Aj49SP41IcFPZP8bWmmxVwOsxDjbjL8pKPZ3c79eOGv1F5xHWAKxXNwiAAAAAElFTkSuQmCC';
imgElement.setAttribute('src', imgSrc);

var markerOverlay = new ol.Overlay({
element: imgElement,
position: coordinate,
positioning: 'center-center'
});

return markerOverlay;
}

// 地図を表示し、ピンを立てる
function setPin(space) {
var container = document.getElementById('popup');
var content = document.getElementById('popup-content');
var closer = document.getElementById('popup-closer');

var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.XYZ({
attributions: [
new ol.Attribution({
html: "<a href='[http://maps.gsi.go.jp/development/ichiran.html](http://maps.gsi.go.jp/development/ichiran.html)' target='_blank'>地理院タイル</a>"
})
],
url: "[http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png](http://cyberjapandata.gsi.go.jp/xyz/std/%7Bz%7D/%7Bx%7D/%7By%7D.png)",
projection: "EPSG:3857"
})
})
],
target: 'map',
view: new ol.View({
zoom: 16
})
});

if(IdoKido !== "" && IdoKido !== null && IdoKido !== undefined){

var Ido = 0;
var Kdo = 0;

const c1 = IdoKido.split(",");

for (let i = 0; i < c1.length; i++) {

if(i === 0){
Ido = c1[i].trim();
}
else
{
Kdo = c1[i].trim();
}

}

//経度と緯度を変換
let coordinate = convertCoordinate(Number(Kdo), Number(Ido));
//マーカーの作成
let marker = makeMarkerOverlay(coordinate);
   //マップにマーカを追加する
map.addOverlay(marker);
map.getView().setCenter(convertCoordinate(Number(Kdo), Number(Ido)));
}
else
{
//経度と緯度を変換
let coordinate = convertCoordinate(140.882137,38.261294);
//マーカーの作成
let marker = makeMarkerOverlay(coordinate);
   //マップにマーカを追加する
map.addOverlay(marker);
map.getView().setCenter(convertCoordinate(140.882137,38.261294));
}

}

kintone.events.on(['app.record.index.show','app.record.create.show','app.record.detail.show', 'app.record.edit.show',
'app.record.index.change.緯度経度','app.record.create.change.緯度経度', 'app.record.edit.change.緯度経度',
'app.record.index.edit.change.緯度経度'], function(event) {
/*
//追加したいスペースを指定して、nullチェック(増殖バグ防止)
if (document.getElementById('map') !== null) {
return;
}
*/

var record = event.record;
IdoKido = record["緯度経度"].value;

var space = kintone.app.record.getSpaceElement('map');
$(space).append('<div id="map" style="width:400px; height:400px"></div>');

setPin(space);

});

こんにちは!

上記のコードそのままとのことですが、

増殖バグ防止の部分のコメントアウトを解除しても、増殖してしまうのですよね?

/*
//追加したいスペースを指定して、nullチェック(増殖バグ防止)
if (document.getElementById(‘map’) !== null) {
return;
}
*/

どこまで正常に動いているか切り分けがまず必要になるかと思います:eyes:

「いいね!」 1

このトピックは最後の返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。