diff --git a/plugin-designs/gospel-resources/resources-map.vue b/plugin-designs/gospel-resources/resources-map.vue index 1df946fef..87ae99eb5 100644 --- a/plugin-designs/gospel-resources/resources-map.vue +++ b/plugin-designs/gospel-resources/resources-map.vue @@ -732,6 +732,7 @@ function groupAt(i) { population: r[5], countries: byIso.value[r[3]]?.country || r[3], _iso3: r[3] || '', + lat: r[1], lng: r[2], scripture_url: c.s || '', film_url: c.f || '', /* Empty except where the JESUS component does not carry this language and another @@ -810,6 +811,37 @@ const withoutResources = computed(() => groupsForCountry.value.filter((r) => !ha * Third time this exact flag has under-reported: the pins builder and the access builder were * both corrected the same way. Same three signals here, so the four surfaces agree. */ +/** + * ═══ WHAT A DOT IS, AND WHAT IT IS NOT ════════════════════════════════════════════════════ + * + * A pin is a locality marker for a PEOPLE, not the location of a settlement, and the data says + * so if you look at it. MEASURED over the 2,107 placed groups: 2,048 distinct coordinates, so + * 49 coordinates carry more than one group and 108 groups sit on a point they share with + * another — 41 pairs, 6 triples and 2 quadruples. Four groups share 12.843781, 75.247906 in + * coastal Karnataka; four more share a second point a few kilometres away. + * + * The coordinates also carry FALSE PRECISION: 1,274 of them are given to six decimal places, + * which is metre resolution on a figure that describes where a people is found. Rendering that + * without comment invites a reader to treat a dot as an address. + * + * So the sheet says what the dot is, and where a point is shared it says how many share it. + * "Approximate" alone is not the honest word — it hides that some dots are literally the same + * dot, which is the part a reader would otherwise never discover. + */ +const sharedPoints = computed(() => { + const at = {} + for (const r of pinRows.value) { + const k = `${r[1]},${r[2]}` + ;(at[k] = at[k] || []).push(r[0]) + } + return at +}) +const sharedWith = (g) => { + if (!g || g.lat == null || g.lng == null) return [] + const names = sharedPoints.value[`${g.lat},${g.lng}`] || [] + return names.filter((n) => n !== g.people_group) +} + const isDeafGroup = (code, name) => { const c = pinCodes.value[code] return (c && c.sg === 1) || /sign language/i.test((c && c.l) || '') || /\bDeaf\b/i.test(name || '') @@ -1930,6 +1962,22 @@ useShadowStyles(
+ The dot marks where this people is found, not a town or a boundary. + + It sits on the same point as + {{ sharedWith(selectedGroup).join(', ') }} — {{ sharedWith(selectedGroup).length + 1 }} + groups share this coordinate, so the position tells you the locality and not which + group is where. + +
+