
å æ¥ãããŒã¿ããŒãžã§ã³2.1.4ã®æ¬¡ã®ãªãªãŒã¹ãè¡ãããŸããã ãã®ãªãªãŒã¹ã¯ããã«ã·ã§ãããéåžžã«æããŠããããšãèµ·ãã£ãããšã§æ³šç®ã«å€ããŸãã èŠåããããã«ãã¿ã°ã¯ã©ã¹ã¿ãªã³ã°ã®äžäœäºææ§ãå£ããªããã°ãªããŸããã§ããã
ãã®èšäºã§ã¯ãããŒãžã§ã³2.1.4ã§ã¯ã©ã¹ã¿ãªã³ã°ã䜿çšããéã®é©æ°ããªã¹ãããã ãã§ãªãããããã®é©æ°ãçã¿åºãå¿ èŠãããçç±ã«ã€ããŠã説æããŸãã ãããŠãããªãã¯ã³ãŒããæžãçŽããªããã°ãªããŸããããããŠãããªããããªãããããããªããã°ãªããªãçç±ãç解ããªããªãã°ãã³ãŒããæžãçŽãããšã¯æ²ããã§ãã
èšäºã®å 容ïŒ
- ã©ãã«ã®éåæè¿œå ããã£ã³ã»ã«ããŸãïŒãã®ã¢ã€ãã ã¯ãobjectsaddtomapã¡ãœãããäœããã®æ¹æ³ã§äœ¿çšãã人ãèªãå¿ èŠããããŸãïŒã
- ãããªãã¯ã¯ã©ã¹ã¿ãªã³ã°æ¹æ³ãå€æŽããŸãã
- ã«ãŒããã¿ã€ã«ã«åå²ããæ¹æ³ãå€æŽããŸãïŒãããã誰ãæ°ä»ããªãã§ãããïŒã
- Clusterãšã³ãã£ãã£ã®ååãClusterPlacemarkã«å€æŽããŸãïŒãããã誰ãæ°ä»ããªãã§ãããïŒã
- clusterer.balloonããã³clusterer.hintã®å€æŽïŒã¯ã©ã¹ã¿ãŒãã©ã³ã䜿çšããå ŽåããŸãã¯ã¯ã©ã¹ã¿ãŒã«ãã³ããè¿œå ãããå Žåã¯ãèªã䟡å€ããããŸãïŒã
- ä»»æã®ã¯ã©ã¹ã¿ãŒã¢ã€ã³ã³ãèšå®ããããšã¯æ°ããããšã§ãïŒãããããã§æãããªå Žåã¯ãèªã䟡å€ããããŸãïŒã
- ããªã»ãããªãã·ã§ã³ã®åŸ®èª¿æŽãŸãã¯ãããŒæã®ã¯ã©ã¹ã¿ãŒã«ã©ãŒã®å€æŽæ¹æ³ã
- ã¯ã©ã¹ã¿ãŒããã³ã¯ã©ã¹ã¿ãŒå ã®ã©ãã«ã®ãã¬ãã£ãã¯ã¹ãªãã·ã§ã³ã
- ã³ãŒãã®éãã®èŠçŽè¡šã
- ããŒãžã§ã³ã®é床ã®æ¯èŒïŒèšäºãçŽåŸãããããïŒã
éåæã¿ã°ä»ãããã£ã³ã»ã«ããŸãã
ããŒãžã§ã³2.0ã§ã¯ããžãªãªããžã§ã¯ããäœæããããããã«è¿œå ãããããã«1ã€ã®ã¹ããªãŒã ã§ã¬ã³ããªã³ã°ãããŸããã ãã©ãŠã¶ã匱ãã»ã©ããããã«è¿œå ãããªããžã§ã¯ããå€ããªãã»ã©ãã¡ãã»ãŒãžã衚瀺ãããå¯èœæ§ãé«ããªããŸãã

éçºè ã®ã¢ã³ãã³ã¯ããã®ç¶æ³ãç§åŠçšèªãã¶ãªãã³ããšåŒãã§ããŸãã
ãããäžã®ã¿ã°ã®æ°ãå€ãå Žåãã¯ã©ã¹ã¿ãªã³ã°ã䜿çšããå§ããŸãã ããããã®ãªããžã§ã¯ãããããšãããããã®åãã¶ãªãã³ã®åé¡ãçŸããŸãã äœãã解決ããå¿ èŠããããã¯ã©ã¹ã¿ãŒåã§ã¯ãããã©ã«ãã§ããããžã®ãªããžã§ã¯ãã®éåæè¿œå ãè¡ãããšã決å®ãããŸããã ãªããžã§ã¯ããobjectsaddtomapã€ãã³ãã«ãã£ãŠãããã«è¿œå ãããããšãç解ã§ããŸããã ããŒãžã§ã³2.0ã®äŸã次ã«ç€ºããŸãã
// . // , // , // . cluster.events.add('objectsaddtomap', function () { // . var geoObjectState = cluster.getObjectState(myGeoObjects[1]); // , . if (geoObjectState.isShown) { // , . if (geoObjectState.isClustered) { geoObjectState.cluster.state.set('activeObject', myGeoObjects[1]); geoObjectState.cluster.balloon.open(); } else { // , . myGeoObjects[1].balloon.open(); } } });
ããã§ã®äœæ¥ãéåžžã«äŸ¿å©ã ã£ããšã¯èšããŸããã ããããäœãããªããããäžäŸ¿ã§ãããã©ãŠã¶ãã¶ãäžãã£ãŠããããšã¯ãã³ãŒãã®çŸãããããåªããè°è«ã§ãã
ããŒãžã§ã³2.1ã§ã¯ããªããžã§ã¯ãã®åé¢ãšãããäžã§ã®è¡šç€ºã«åãã£ãŠæ©ããŸããã 誰ããgetOverlayã¡ãœãããéåæã§äžäŸ¿ã«ãªã£ãŠããããšã«æ°ã¥ãããããããŸãã-ããã ãã§ãã å®éãã¬ã€ã¢ãŠãã®éåæã¬ã³ããªã³ã°ã¯ããããã«ãªããžã§ã¯ããè¿œå ããããã»ã¹ãæé©åããåªããæ¹æ³ã§ãã
ç©äºã®æ¬è³ªãããããç解ããããã«ãã©ãã«ãäœæãããŠãããããã«è¡šç€ºãããæ¹æ³ãèŠãŠã¿ãŸãããã ããã»ã¹ã¯3ã€ã®æ®µéã«åããããšãã§ããŸãã
- ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæãã
- ããããžã®ã¢ã€ãã ã®è¿œå
- HTMLã§ã®ã©ãã«ã¬ã€ã¢ãŠãã®ã¬ã³ããªã³ã°
第äžã«ã説æã¯å¿ èŠãªããšæããŸãã æé 2ãš3ã®éãã¯æ確ã§ã¯ãããŸããã ãªããžã§ã¯ãããããã«è¿œå ãããšãã©ãã«ã芪ã³ã¬ã¯ã·ã§ã³ïŒã»ãšãã©ã®å Žåmap.geoObjectsïŒã«æ·»ä»ãããŸãã ã¿ã°ã¯ãå°å³æ圱ãå«ããã®ã³ã¬ã¯ã·ã§ã³ããããã€ãã®ãªãã·ã§ã³ãåãåããŸãã ã©ãã«ãªããžã§ã¯ãã¯ãããããã©ã®æ圱ã§æç»ãããŠãããã確èªããåŸããã®ãžãªã¡ããªãå¹³é¢ã«æ圱ã§ããŸãïŒãããå®è¡ãããŸãïŒã å¹³é¢äžã®ããŒã¯ã®åº§æšãæ圱ããåŸãããŒã¯ã¢ã€ã³ã³ãæç»ããããã«ç»é¢äžã®ã©ã®ãã¯ã»ã«ãã€ã³ãã§å¿ èŠããæããã«ãªããŸãã ãã®æç¹ã§ãã¹ããŒãž2ã¯çµäºããŸãã
3çªç®ã®æ®µéã¯ãç¹å®ã®ãã¯ã»ã«åº§æšã§å°å³äžã«ããŒã¯ãæãããã»ã¹ã§ãã ããŒãžã§ã³2.1ã§ã¯ãæåã®2ã€ã®ã¹ããŒãžã1ã€ã®ã¹ã¬ããã§åæçã«å®è¡ããŸãã ãã ããã¿ã€ã ã¢ãŠãã§ãªããžã§ã¯ããæç»ããŸãã
ãããã£ãŠãã©ãã«ã¯ãšã«ããéåæã«æç»ããããããã¯ã©ã¹ã¿ãŒåããŒã«ã®ããžãã¯ãç°¡çŽ åããããããžã®ã©ãã«ã®é 延远å ãåé€ããããšãå¯èœã«ãªããŸããã clustererã«ã¯synchAddãªãã·ã§ã³ããªããªãã察å¿ããobjectsaddtomapã€ãã³ããæ¶ããŸããã
ã€ãŸããããŒãžã§ã³2.1.4ã«ã¢ããã°ã¬ãŒãããã«ã¯ãobjectsaddtomapã€ãã³ããžã®ãµãã¹ã¯ãªãã·ã§ã³ãã³ãŒãããåé€ããå¿ èŠããããŸãã ãã®ã€ãã³ãã®ãã³ãã©ãŒå ã®ãã¹ãŠã®ã³ãŒãã¯ããªããžã§ã¯ããã¯ã©ã¹ã¿ãŒåããŒã«ã«è¿œå ããåŸãããã«åæããŠå®è¡ã§ããããã«ãªããŸããã ïŒãã®èšäºã®æåŸã«ããbecome-wasã圢åŒã®äŸã瀺ããè¡šã瀺ããŸãããã以äžèªã¿ãããªãå Žåã¯ãçŽæ¥ã¢ã¯ã»ã¹ã§ããŸããïŒ
ãããªãã¯ã¯ã©ã¹ã¿ãªã³ã°æ¹æ³ãå€æŽãã
ããŒãžã§ã³2.0ã§ã¯ãã¯ã©ã¹ã¿ãŒåããŒã«ã¯ymaps.Collectionãªããžã§ã¯ãã®åå«ã§ããã 圌ã¯ãã³ã¬ã¯ã·ã§ã³ããaddãremoveãsetParentãªã©ã®å¿ èŠãªã¡ãœãããããã³getIteratorãªã©ã®äžèŠãªã¡ãœãããç¶æ¿ããŸããïŒãããã®ã¡ãœãããäžèŠã ã£ãçç±ã説æããŸãïŒã clusterizerã¯ããèªäœã®ã³ã¬ã¯ã·ã§ã³ã§ããããã«æãããŸã-ãªããžã§ã¯ããè¿œå ãããªããžã§ã¯ããåé€ããããšãã§ããŸãã ããããã¯ã©ã¹ã¿ãŒåããŒã«ã«ã¯ããã€ãã®èŠçŽ ãå«ãŸããã ãã§ãªãããããã®èŠçŽ ããããäžã«è¡šç€ºããå Žåãšè¡šç€ºããªãå Žåããããè¿œå ã®ã¯ã©ã¹ã¿ãŒãªããžã§ã¯ããçæããŸãã
ãããã£ãŠãåã¡ãœããã®å®è£ ãã©ã®ãããªãã®ã§ãã£ãŠããããŸãè«ççã§ã¯ãããŸããã è¿œå ãããã¹ãŠã®ãªããžã§ã¯ããå埩åŠçããå¿ èŠããããŸãã ãªããžã§ã¯ããšã¯ã©ã¹ã¿ãŒããŠã©ãŒã¯ã¹ã«ãŒããå¿ èŠããããã©ããã ããããã¯ã©ã¹ã¿ãŒã¯åžžã«åæ§ç¯ãããŠããŸãã ã¯ã©ã¹ã¿ãªã³ã°ã¯å®å šãªã³ã¬ã¯ã·ã§ã³ã§ã¯ãªãããšã«æ°ä»ããŸããã ããã¯ã³ã¬ã¯ã·ã§ã³ã§ã¯ãããŸããã
çŸåšãã¯ã©ã¹ã¿ãŒåããŒã«ã«ã¯ããªããžã§ã¯ãã«ã¢ã¯ã»ã¹ããããã®ã·ã³ãã«ã§æ確ãªãããªãã¯ã¡ãœããããããŸãã
- Clusterer.getGeoObjects-ã¯ã©ã¹ã¿ãŒã«è¿œå ãããèŠçŽ ã®é åãè¿ããŸã
- Clusterer.getClusters-çŸåšãããã«è¿œå ãããŠããã¯ã©ã¹ã¿ãŒã®é åãè¿ããŸãã ãããã¯ãã¹ãŠã¯ã©ã¹ã¿ã§ã¯ãªããç¹å®ã®æéã«ã®ã¿è¡šç€ºãããããšã«æ³šæããŠãã ããã
ããã¥ã¡ã³ãã§ãããã®ã¡ãœããã®äœ¿çšäŸãæ¢ããŠãã ããã
ããããã¿ã€ã«ã«åå²ããæ¹æ³ãå€æŽããŸã
ãåç¥ã®ããã«ãã°ãªããã¯ã©ã¹ã¿ãªã³ã°ã¢ã«ãŽãªãºã ã䜿çšããŸãïŒè©³çŽ°ã«èå³ããã人ã¯èª°ã§ã-ã¯ã©ã¹ã¿ãªã³ã°ã«ã€ããŠã®ç§ã®å€ãããã®ã¹ããŒããžã®ãªã³ã¯ã§ãïŒã ã¢ã«ãŽãªãºã ã¯åçŽã§çŸããããïŒã¯ã©ã€ã¢ã³ãäžã§ãªããžã§ã¯ããã¯ã©ã¹ã¿ãŒåããå Žåãæåã«ã³ãŒãå®è¡ã®é床ãèæ ®ããå¿ èŠããããŸãïŒã
ãããã¯æ£æ¹åœ¢ã®ã»ã«ã«åå²ãããŸããã 1ã€ã®ã»ã«ã«åé¡ãããã©ãã«ãã¯ã©ã¹ã¿ãŒã圢æããŸããã åå°ããªããããã©ãã°ã§èšç®ãè¡ããªãããã«ãã»ã«ã¯å€§ããªã¯ã©ã¹ã¿ãŒã«çµåãããŸãããããããã¯ã©ã¹ã¿ãŒã¿ã€ã«ããšåŒã³ãŸãã ãã¹ãŠã®ã¯ã©ã¹ã¿ãŒã¿ã€ã«ãåŠçããããããã®å¯èŠé åãå®å šã«ãŸãã¯éšåçã«èœã¡ãŸããã

ãã®ããŒãžã§ã³ã§ã¯ããã¿ã€ã«ããšããèšèã®æŠå¿µãæ··åããªãããšã«ããŸããã çŸåšãã¯ã©ã¹ã¿ãŒã¿ã€ã«ã¯éåžžã®ã«ãŒãã¿ã€ã«ãšãŸã£ããåãå Žæã«é 眮ãããŠããããµã€ãºã¯åžžã«256x256ãã¯ã»ã«ã§ãã ããã¯å¶éãæå³ããŸã-ã¯ã©ã¹ã¿ãªã³ã°ã»ã«ã®ãµã€ãºã¯ãaïŒ256以äžãbïŒæŽæ°ã®ã¯ã©ã¹ã¿ãªã³ã°ã»ã«ãã¿ã€ã«ã«åãŸãå¿ èŠããããŸãã ã€ãŸããã¯ã©ã¹ã¿ãªã³ã°ã»ã«ãµã€ãºã®æå¹ãªå€ã¯ã2ã4ã8ã16ã32ã64ã128ãããã³256ã§ãã
ããŠãè¯ããã¥ãŒã¹ã¯-ããªããééã£ãå€ãæ±ããŠããç§ãã¡ã¯ãããæãè¿ãæ£ããå€ã«æã£ãŠããããã¹ãŠãããŸãããã§ãããã ãªãç§ã¯ããããã¹ãŠæžããã®ã§ãããããªãã¯å°ããŸãã ã¯ãããã®ããã«ã 誰ããèå³ãæã€ãããããŸãããã誰ããã¯ã©ã¹ã¿ãªã³ã°åŸã«ãããäžã®ç¶æ³ãå°ãå€ãã£ãçç±ãåãã§ç¥ãã§ãããã
ã¿ã€ã«ã¯å°ãããäžè¬çã«ããããã®å¢çç·ã¯ã¿ã€ã«ã®å¢çç·ãšäžèŽããå¯èœæ§ãããããããããã®è¡šç€ºé åã«è¿œå ã®ã€ã³ãã³ã
mapViewport
ïŒããã©ã«ãã§ã¯128ãã¯ã»ã«ïŒãå°å ¥ããŸããã ã€ãŸããåžžã«å¿ èŠä»¥äžã«å°ãåŠçãããŸãã ãã ãããŠãŒã¶ãŒã¯ããããã移åãããšãã«åæ§ç¯ã«æ°ä»ããªãã§ãããã
ã¯ã©ã¹ã¿ãŒã®ååãClusterPlacemarkã«å€æŽ
ç§ã¯ãã€ãã2ã3人ã®äººã ïŒç§ãšç§ãã¡ã®ããã¥ã¡ã³ã¿ãªãŒã®OlesyaïŒã ããClusterãClustererãšã©ã®ããã«ç°ãªãããéäŒã«äŒããããšãã§ãããšçã£ãŠããŸããïŒéããç解ããã°ãããªãã¯çŽ æŽããã仲éã§ãïŒã
- Clustererã¯ãã³ã¬ã¯ã·ã§ã³ã®ãããªãªããžã§ã¯ãã®ã¯ã©ã¹ã¿ãŒåããŒã«ã§ãã
- ã¯ã©ã¹ã¿ãŒã¯ãã¯ã©ã¹ã¿ãŒåããŒã«ã«ãã£ãŠçæããããªããžã§ã¯ãã®ã°ã«ãŒãã§ãã ãããäžã§ã¯ãã©ãã«ã®ããã«èŠããŸãã
ããã¥ã¡ã³ãã®ç°ãªãããŒãžã§ã®ã¯ãªãã¯æ°ã調æ»ããŸãã-Clustererããã³ClusterããŒãžã¯éåžžã«äººæ°ããããŸãã ãããŠç§ã¯ãã¯ã©ã¹ã¿ãŒãã¯ãªãã¯ãã人ã ãæ®é ·ããšèª€è§£ã®ç ç²è ã§ãããšçã£ãŠããŸãã ãã®ãããClusterãšã³ãã£ãã£ã®ååãClusterPlacemarkã«å€æŽããããšã«ããŸããã ClustererãšClusterPlacemarkãèŠããšãäœãäœã§ããããæããã«ãªãããã§ãã
API Mapsã¯ã©ãã§ã¯ãã¯ã©ã¹ã¿ãŒãã¯ã©ã¹ã¿ãŒãšã¯å¥ã«äœ¿çšãããŠãŒã¶ãŒã¯è¡šç€ºãããªãã£ãããïŒãµãã£ãã¯ã¹ã«æ³šæïŒããã®å€æŽã¯ãŸã£ããæ°ä»ãããŸããã ãŸããClustererã§ã¯ãªãClusterã®ããã¥ã¡ã³ãã§ã®èª€ã£ãã¯ãªãã¯ã¯ãéå»ãããã®ãŒãã¯ãã§ãã ããã«ãããããããClusterãªããžã§ã¯ãã®ããã¥ã¡ã³ããèªã¿ããã®æ倱ã芪åã®æ倱ãšããŠèªèãããå Žåã¯ãClusterPlacemarkã®ããã¥ã¡ã³ãããèªã¿ãã ããã
clusterer.balloonããã³clusterer.hintã®å€æŽ
楜ããéšåããå§ããŸããã-æåŸã«ãã¯ã©ã¹ã¿ãŒã©ãã«ã«ããŒã«ãããã衚瀺ããæ©èœãè¿œå ããŸããã ãã®ã³ãŒãã§ãããè¡ãããšãã§ããŸãïŒ
var clusterer = new ymaps.Clusterer(); clusterer.createCluster = function (center, geoObjects) { // - . var clusterPlacemark = ymaps.Clusterer.prototype.createCluster.call(this, center, geoObjects), geoObjectsLength = clusterPlacemark.getGeoObjects().length, hintContent; if (geoObjectsLength < 10) { hintContent = ' '; } else if (geoObjectsLength < 100) { hintContent = ' '; } else { hintContent = ' '; } clusterPlacemark.properties.set('hintContent', hintContent); return clusterPlacemark; };
ã¯ã©ã¹ã¿ãŒã«ã¯
hintContent
ãã£ãŒã«ãã
hintContent
ãŠããªããããããã©ã«ãã§ã¯ãã³ãã¯è¡šç€ºãããŸããïŒãããäžã«ã¯æ°åã®ä»ããåããããŸãããšã«ããèšèã§èª¬æããªãæ¹ãããã§ãïŒã ãã®å€ã®èšå®ãéå§ãããšããã«ããã³ãã衚瀺ããå§ããŸãã
äžè¬çãªãã³ããšãã©ã³ã®å€æŽã«ã€ããŠã ããŒãžã§ã³2.0ã®é¢šè¹ãæäœããããã«ãåã¯ã©ã¹ã¿ãŒã¯
.balloon
ãã£ãŒã«ããäœæããŸããã
cluster.balloon.open();
ããã«èŠãããã«ãŒã³ãéã ã
ãã®ãœãªã¥ãŒã·ã§ã³ã®æ¬ ç¹ã¯ãã³ãŒãå®è¡ã®é床ãé ãããšã§ããã å®éã100åã®ã¯ã©ã¹ã¿ãŒãããå Žåãããããã«ãã«ãŒã³ãèšå®ã§ããŸããã€ãŸããã¯ã©ã¹ã¿ãŒããšã«
cluster.balloon
ãã£ãŒã«ãã«
cluster.balloon
ãããŒãžã£ãŒãäœæããŠå²ãåœãŠãå¿ èŠã
cluster.balloon
ãŸãã ãã®ãããé床ã«é¢ããäœæ¥ã®äžç°ãšããŠããã©ã³ã®ç®¡çè ãšã¯ã©ã¹ã¿ãªã³ã°ã®ãã³ãã1人äœæããããšã決å®ãããŸããã ããã§ãã¯ã©ã¹ã¿ãŒäžã®ãã«ãŒã³ã次ã®ããã«éãããšãã§ããŸãã
// -. clusterer.balloon.open(clusterPlacemark);
ãã©ã³ãéãããã®ã³ãŒãã®å€æŽã®è©³çŽ°ã«ã€ããŠã¯ã以äžã®èŠçŽè¡šãåç §ããŠãã ããã
ã«ã¹ã¿ã ã¯ã©ã¹ã¿ãŒã¢ã€ã³ã³ã®å®çŸ©-æ°æ©èœ
ããŒãžã§ã³2.0ã§ã¯ããã¹ãŠã®å°çãªããžã§ã¯ãã¯åçã§ããã ããããããã€ãã¯ããå¹³çã§ããã ãã£ã³ãã¹ã«æãããã©ãã«ã¯ãã¢ã¯ãã£ããªé åãéããŠã€ã³ã¿ã©ã¯ãã£ãæ§ãç²åŸããŸããã DOMã䜿çšããŠæãããã©ãã«ã¯ãããèªäœãã€ã³ã¿ã©ã¯ãã£ãã§ããã ããã«ãããåäœã«éããçããå€ãã®äžäŸ¿ãçããŸããã
ãããã£ãŠãããŒãžã§ã³2.1ã§ã¯ããã¹ãŠã®ãªããžã§ã¯ããã€ãã³ãã®å°å¹³ç·ã®äžã«ïŒãããäœãæå³ããã«ããïŒéã¶ããšã決å®ãããŸããã ããã§ããããã®äžéšã«ã¢ã¯ãã£ããšãªã¢ãéãåããããããããã¹ãŠã®ããŒã¯ãã€ã³ã¿ã©ã¯ãã£ãã«ãªããŸãã ãã®ãããã©ãã«ã¯ã¢ã¯ãã£ããšãªã¢ãã©ãã«ã®äžã«ãã圢ç¶ãšãµã€ãºã瀺ãå¿ èŠããããŸãïŒã«ãŒãœã«ãå€æŽããç»åã®éšåã«ã«ãŒãœã«ãåããããšãã©ãã«ãã¯ãªãã¯ããŠãã§ãã¯ããå¿ èŠããããŸãïŒã
æšæºã¯ã©ã¹ã¿ã¿ã°ã«ã¯ã倧ãäžãå°ã®3çš®é¡ã®ç»åããããŸãã ãããã®åçã¯äžžãã§ãã ããŠã¹ãã¯ã©ã¹ã¿ãŒã©ãã«äžã«ç§»åããããšãããšãã©ãã«ã®ã¢ã¯ãã£ããªé åãç»åãšäžèŽããåã§ãããããšãããããŸãã



äžéšã®ãŠãŒã¶ãŒã¯ãããŒãžã§ã³2.1.3ã§ã¯ã©ã¹ã¿ãŒã¢ã€ã³ã³ã®ç»åã眮ãæãããšãã«ãã¢ã¯ãã£ããªé åããŸã äžžããŸãŸã§ããããšã«æ°ä»ããŠããŸãïŒã©ãã«ã¯ãäžè¬çã«ã¯æ£æ¹åœ¢ãŸãã¯ããã«äžè§åœ¢ã§ãïŒã

-ã«ã¹ã¿ã ã©ãã«ããã ããåã¯ãšã«ããã¯ãªãã¯å¯èœã§ããã
ãããä¿®æ£ããã©ãã«ã®ã¢ã¯ãã£ãé åã®åœ¢ç¶ãåå¥ã«æ±ºå®ã§ããããã«ãªããŸããã ããããã®ããã«è¡ãããšãã§ããŸãïŒäžžããŒã¯ã®äŸïŒã
clusterer.options.set({ clusterIcons: [ { href: 'images/small.png', size: [20, 20], offset: [-10, -10], shape: new ymaps.shape.Circle(new ymaps.geometry.pixel.Circle([0, 0], 10)) }, { href: 'images/medium.png', size: [30, 30], offset: [-15, -15], shape: new ymaps.shape.Circle(new ymaps.geometry.pixel.Circle([0, 0], 15)) }, { href: 'images/big.png', size: [40, 40], offset: [-20, -20], shape: new ymaps.shape.Circle(new ymaps.geometry.pixel.Circle([0, 0], 20)) } ] });
ã³ãŒãã¯éåžžã«åçŽã§ã¯ãªãããšãå€æããããã代æ¿ã¢ãããŒãããããŸã-ããåçŽã§ãããããç²ãã§ãã ã¢ã€ã³ã³ã®èª¬ææã«åœ¢ç¶ãã©ã¡ãŒã¿ãŒãæå®ããªãå Žåãã¢ã€ã³ã³ã®äžã®é·æ¹åœ¢ã®é åãã¢ã¯ãã£ãã«ãªãããµã€ãºãšãªãã»ããã®ãã©ã¡ãŒã¿ãŒã«åºã¥ããŠåœ¢æãããŸãã ã€ãŸãããã®ãããªã³ãŒããæ£åžžã«æ©èœããã¢ã€ã³ã³ã®åšãã®é·æ¹åœ¢ã®é åã®ã¿ãã¯ãªãã¯å¯èœã«ãªããŸãã

ç»åã¯è€éã§ãããããããããã¢ã€ã³ã³ã®åšå²ã®é·æ¹åœ¢ã®é åãã€ã³ã¿ã©ã¯ãã£ãã«ããããšã¯ãããŸããã å®ç§äž»çŸ©ã®çšåºŠã«å¿ããŠãœãªã¥ãŒã·ã§ã³ãéžæããŠãã ããã
clusterer.options.set({ clusterIcons: [ { href: 'images/small.png', size: [20, 20], offset: [-10, -10] }, { href: 'images/medium.png', size: [30, 30], offset: [-15, -15] }, { href: 'images/big.png', size: [40, 40], offset: [-20, -20] } ] });
å¥ã®å°ããªè¿œå ã ã¯ã©ã¹ã¿ãŒã©ãã«å ã®ã³ã³ãã³ãã衚瀺ããããªãå Žåã¯ãclusterIconContentLayoutãªãã·ã§ã³ãnullã«èšå®ã§ããŸããã©ãã«ã¯
clusterer.options.set('clusterIconContentLayout', null);
å ã«æ°åãªãã§è¡šç€ºãã
clusterer.options.set('clusterIconContentLayout', null);
ã¯ã©ã¹ã¿ãŒã®ããªã»ããã®ãã€ããŒãªããžã§ã³
ã¯ã©ãAPIãããã§ã¯ããç¹å®ã®ã¯ã©ã¹ã¿ãŒã«ã¹ã¿ã€ã«ãèšå®ããæ¹æ³ããšãããããã¯ã«é¢ãã質åããããŸããã option.presetStorageã®èª¬æã«ç€ºãããŠããããŒã¯ãã¯ã©ã¹ã¿ãŒåããŒã«å šäœã«èšå®ãããŠããå Žåã«ã®ã¿æ©èœããããããã®è³ªåã«å¯Ÿããé©åãªåçã¯ãããŸããã§ããã ããããåäžã®ã¿ã°ã®å Žåããããã®ããŒã¯é©åããŸããã§ããã ãã®ããŒãžã§ã³ã§ã¯ãããŒããŠãããŒãµã«ã«ãªããŸãã-ãããã¯ãã¯ã©ã¹ã¿ãŒåããŒã«å šäœãšç¹ã«ã¯ã©ã¹ã¿ãŒã©ãã«ã®äž¡æ¹ã«é©ããŠããŸãã
ãã®ããã«ãããŒãããšã¯ã©ã¹ã¿ãŒã®è²ãå€æŽã§ããŸãã
clusterer.events.add('mouseenter', function (e) { var target = e.get('target'); if (typeof target.getGeoObjects == 'function') { target.options.set('preset', 'islands#redClusterIcons'); } }); clusterer.events.add('mouseleave', function (e) { var target = e.get('target'); if (typeof target.getGeoObjects == 'function') { target.options.set('preset', 'islands#blueClusterIcons'); } });
ã¯ã©ã¹ã¿ãŒããã³ã¯ã©ã¹ã¿ãŒå ã®ã©ãã«ã®ãã¬ãã£ãã¯ã¹ãªãã·ã§ã³
ã¯ã©ã¹ã¿åããŒã«ã«ã¯ãã©ãã«ã¯ã©ã¹ã¿ãšããªããžã§ã¯ãã®ã°ã«ãŒãã«åé¡ãããªãã£ãåäžãªããžã§ã¯ãã®2çš®é¡ã®ãªããžã§ã¯ãããããŸãã äž¡æ¹ã®ãªãã·ã§ã³ãèšå®ããããšãå¿ èŠã«ãªãå ŽåããããŸãã 誰ãåããªãã·ã§ã³ãå ¬éããããã«ãã¹ãŠã®ã©ãã«ãšã¯ã©ã¹ã¿ãŒããœãŒãããããšãæãŸãªãããšã¯æããã§ãã ãã¹ãŠã®ãªããžã§ã¯ãã®ãªãã·ã§ã³ãäžåºŠã«èšå®ããã«ã¯ããããã®åããªãã·ã§ã³ãã¯ã©ã¹ã¿ãŒåããŒã«ã§1åæå®ããŸãã ãããŠãã¯ã©ã¹ã¿ãŒåããŒã«ã¯ãããã®ãªãã·ã§ã³ããã®åãªããžã§ã¯ãã«æž¡ããŸãã
ç¹ã«ãããŒãžã§ã³2.0ã§ã¯ããããããšãã§ããŸãã
clusterer.options.set('cursor', 'help');
ã«ãŒãœã«ã¯ãåäžãªããžã§ã¯ããšã¯ã©ã¹ã¿ãŒã©ãã«ã®äž¡æ¹ã§å€æŽãããŸããã
奜å¥å¿readerçãªèªè ã¯ããã¯ã©ã¹ã¿ãŒã©ãã«ãšã·ã³ã°ã«ã©ãã«ã«ç°ãªãçš®é¡ã®ã«ãŒãœã«ãèšå®ãããå Žåã¯ã©ãããã°ããã§ããïŒããšè³ªåããŸãããã®ã±ãŒã¹ãæ³å®ããã¯ã©ã¹ã¿ãŒã©ãã«ããã¯ã©ã¹ã¿ãŒããã¬ãã£ãã¯ã¹ãæã€ãªãã·ã§ã³ãç解ããããšã決å®ããŸããã
clusterer.options.set({ // . ursor: 'pointer', // -. clusterCursor: 'help' });
ãã®ã·ã¹ãã ã§ã¯ãã¯ã©ã¹ã¿ãŒã©ãã«ã«åœ±é¿ãäžããã«åäžã®ã©ãã«ã®ã¿ãã«ã¹ã¿ãã€ãºãããå Žåãé€ãããã¹ãŠåé¡ãããŸããã§ããã åäžã©ãã«ã®ãªãã·ã§ã³ã®ã¿ãå€æŽãããå Žåã¯ã
clusterer.options.set('cursor', 'help');
ãããŠããããã¯éåžžã«å€§ããªå¹æãåŸãŸãã-ãªãã·ã§ã³ã¯åäžã®ãªããžã§ã¯ãã«æ¡åŒµãããã¯ã©ã¹ã¿ãŒã«ã©ãã«ãä»ããŸãã ã€ãŸããåäžã®ã©ãã«ã®ã¿ã«åœ±é¿ãäžãããå Žåã¯ããšã«ããåäžã®ãªããžã§ã¯ããšã¯ã©ã¹ã¿ãŒã®ãªãã·ã§ã³ãèšå®ããå¿ èŠããããŸããã
ããŒãžã§ã³2.1ã§ã¯ãããå°ã䟿å©ã«ãªããŸããã ããã§ãåãªããžã§ã¯ãã®ãã¹ãŠã®ãªãã·ã§ã³ã«ãã¬ãã£ãã¯ã¹ãèšå®ãããŸããã ãã¬ãã£ãã¯ã¹ããclusterãã®ã¯ã©ã¹ã¿ãŒã©ãã«ã®å Žåããã¬ãã£ãã¯ã¹ããgeoObjectãã®åäžã©ãã«ã®å Žåã ããã§ãåãªããžã§ã¯ãã®ãªãã·ã§ã³ã¯äºãã«ç¬ç«ããŠããŸãã äžçªå¥œããªãã®ãå°ããŠãã ããã
// . lusterer.options.set('geoObjectCursor', 'help');
å€æŽã®æŠèŠè¡š
ã ã£ã | ã«ãªã£ãŠããŸã |
---|---|
| |
| |
| |
| |
ãã以å€ã®å Žåããã¹ãŠã¯å€æŽãããŸããã§ããã ãã¹ãŠã®é©æ°ã¯ãããã¥ã¡ã³ãã«èšèŒãããŠããŸãã
ããŒãžã§ã³2.0.36ããã³2.1.4ã§ã®ã¯ã©ã¹ã¿ãŒé床ã®æ¯èŒ
äžåºŠèªãã§ä¿¡ããªããããäžåºŠèŠãã»ããããã 枬å®ã¯ã©ã®ããã«è¡ãããŸãããïŒ ãã®ãããªå Žåã¯ãµã³ãã«ãšããŠåãããŸããïŒ
<!doctype html> <html> <head> <title> </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="http://api-maps.yandex.ru/2.0.36/?load=package.full &lang=ru-RU&ns=ym" type="text/javascript"></script> <script type="text/javascript"> ym.ready(function() { var map = new ym.Map('map', { center: [55.755381, 37.619044], zoom: 13 }), coords = [], center = [55.755381, 37.619044], placemarks = [], i; for (i = 0; i < 10000; i++) { coords[i] = [ center[0] + 0.5 * Math.random() * Math.random() * Math.random() * (Math.random() < 0.5 ? -1 : 1), center[1] + 0.7 * Math.random() * Math.random() * Math.random() * (Math.random() < 0.5 ? -1 : 1) ]; } var startTime = +new Date(); for (i = 0, l = coords.length; i < l; i++) { placemarks[i] = new ym.GeoObject({ geometry: { type: "Point", coordinates: coords[i] } }); } var clusterer = new ym.Clusterer(); clusterer.add(placemarks); map.geoObjects.add(clusterer); var stopTime = +new Date(); alert(stopTime - startTime); }); </script> </head> <body> <div id="map" style="height: 400px; width: 800px;"></div> </body> </html>
ãã®ã³ãŒãã¯ãåŸæ¹äºææ§ãæãªãããç¹ã«ã¯åœ±é¿ããªããããããŒãžã§ã³2.0.36ãšããŒãžã§ã³2.1.4ã®äž¡æ¹ã§ããªã³ã¯ãAPIããŒãžã§ã³ã«åãæ¿ããã ãã§ãå€æŽãªãã§å®è¡ã§ããŸãã æéã¯ããªç§åäœã§æž¬å®ãããŸããã

IE11ã«ã€ããŠçºèšããããšæããŸãã ãã¹ãŠã®ãã©ãŠã¶ãŒã®ãã¹ãã¯ç§ã®ã©ãããããã§å®è¡ããIE11ã®å Žåã¯WindowsãæèŒããå¥ã®ã©ãããããã§å®è¡ããŸããïŒMacbookãæã£ãŠããŸãïŒã ãã®ããããã®ã¹ã±ãžã¥ãŒã«ã§ä»ã®ãã©ãŠã¶ãšäœæ¥é床ãæ¯èŒããããšã¯äŸ¡å€ããããŸããã ãã ããAPIãããŒãžã§ã³ããšã«ã©ã®çšåºŠå éããããè©äŸ¡ãã䟡å€ããããŸãã
éèŠãªã®ã¯ãã¯ã©ã¹ã¿ãŒåãšã©ãã«ã䜿çšããŠã«ãŒãã®åæåæéãççž®ããããšã ãã§ãã ãã©ãŠã¶ã¯ã³ãŒããå®è¡ããæ¯ãåããã¬ã³ããªã³ã°ãªããžã§ã¯ãã«æ»ãããšãã§ããŸãã å šäœçãªè² è·ã¯ããã»ã©å€åããŸããã§ãã-ããã¯æéãšãšãã«åºããã ãã§ãã¢ã¯ã·ã§ã³ã®ããã€ãã¯åŸã§å®è¡ãããŸãã ããã«ãããããããããã¯åŒ±ããã©ãŠã¶ãŒã«ãšã£ãŠéèŠã§ã-äžåºŠã«1ã€ã®ã¹ã¬ããã§å®è¡ã§ãããã³ã°ããããšããçŸåšã§ã¯æéãšãšãã«åæ£ããããã©ãŠã¶ãŒã¯ãã®ãããªè² è·ãåŠçã§ããŸãã
ãããã«
äºææ§ã®æ éã¯ãéçºè ã®äººçã«ãããå°ããªæ²åã§ããããšãç解ããŠããŸãã ããããæéãçµã€ãšç¶æ³ã¯å€ãããçµéšãç©ãã§ãŠãŒã¶ãŒãããã£ãŒãããã¯ãåãåããŸãã ããŒãžã§ã³2.0ã§å€ãã®ããšãå€æŽãããã£ãã®ã§ãããäœãå€æŽããªãããšãçŽæãããããããã¯ã§ããŸããã§ããã
ããã§ãæ°ããããŒãžã§ã³2.1ã®ãªãªãŒã¹ã«é¢ããŠå°ãèªç±ã«ãªããŸããã ãã¡ãããããã«å€æŽãããã£ãã®ã§ãããå€æŽã§ããã®ã¯å°ããªããšã ãã§ãïŒ3.0ã§ã¯ãªã2.1ã®ãŸãŸã§ãïŒã
ã€ãããŒã·ã§ã³ãå°ãªããšãéçºã®å°ãã®å©ãã«ãªãããã®å©çãã³ãŒããæžãçŽããªããã°ãªããªããšããäžäŸ¿ãå æããããšãé¡ã£ãŠããŸãã
èšäºã®çµæ«ã¯ååãã§ãªããã°ãªããªããšèšãããã®ã§ãããããã®çããã«ãç¥ããç³ãäžããŸãïŒ