/** * Display 2nd level reference maps -- i.e. create HTML tags, push data into JavaScript to create Google Maps dynamically */ protected function _displaySecondLevelReferenceMaps($args, $overlays) { $js = ""; $itemReferencesConfiguration = SELF::_retrieveReferenceElementConfiguration(); if (!SELF::_needsMaps($itemReferencesConfiguration)) { return; } if (SELF::$_withGeoLoc and SELF::$_secondLevelGeoLocations) { $output = "<h2>" . __("Geolocations of Second Level References Items") . "</h2>\n"; $itemReferencesMapHeight = intval(get_option('item_references_map_height')); if (!$itemReferencesMapHeight) { $itemReferencesMapHeight = ITEM_REFERENCES_MAP_HEIGHT_DEFAULT; } $secondLevelMapsData = array(); $db = get_db(); foreach (SELF::$_secondLevelGeoLocations as $elementId => $firstLevelRef) { if ($firstLevelRef and $itemReferencesConfiguration[$elementId][0] > 0) { $sql = "SELECT name FROM {$db->Elements} WHERE id = {$elementId}"; $elementName = $db->fetchOne($sql); $output .= "<h4>{$elementName}</h4>\n"; $data = array("mapId" => "mapTwo" . $elementId, "line" => intval($itemReferencesConfiguration[$elementId][0] == 2), "refMaps" => array()); $reqOverlays = array(); foreach ($firstLevelRef as $firstLevelRefId => $referenceMap) { $firstLevelRefData = SELF::getDataForId($firstLevelRefId); if ($firstLevelRefData !== false) { $firstLevelRefTitle = $firstLevelRefData["title"]; $firstLevelRefUrl = url('items/show/' . $firstLevelRefId); $data["refMaps"][$firstLevelRefId] = array("title" => $firstLevelRefTitle, "url" => $firstLevelRefUrl, "coords" => array()); foreach ($referenceMap as $secondLevelRefId => $pin) { if ($pin) { $data["refMaps"][$firstLevelRefId]["coords"][] = array("title" => $pin["geo_title"], "lat" => $pin["latitude"], "lng" => $pin["longitude"], "url" => $pin["url"], "ovl" => $pin["overlay"], "zl" => $pin["zoom_level"]); if (isset($reqOverlays[$pin["overlay"]])) { $reqOverlays[$pin["overlay"]]++; } else { $reqOverlays[$pin["overlay"]] = 1; } } # if ($pin) } # foreach($referenceMap } # if ($firstLevelRefTitle } # foreach($firstLevelRef $ovlDefault = -1; if (count($reqOverlays) == 1) { $ovlDefault = array_keys($reqOverlays)[0]; } $output .= "<div id='" . $data["mapId"] . "' style='height:" . $itemReferencesMapHeight . "px; width:100%;'></div>\n"; $curSecondCount = count($secondLevelMapsData); if ($overlays) { $output .= '<div class="reference_ovl_options"><strong>' . __("Select Map Overlay:") . '</strong> ' . get_view()->formSelect($data["mapId"] . "_ovl", $ovlDefault, array("class" => "refMapOvlSel", "data-map-two-arr" => $curSecondCount), $overlays["jsSelect"]) . "<span class='refMapOvlSlider' id='" . $data["mapId"] . "_slider' data-map-two-arr='" . $curSecondCount . "'></span>" . "</div>"; } $output .= "<div id='" . $data["mapId"] . "_legend' class='itemRefTwoMapLegend'></div>"; $secondLevelMapsData[] = $data; } # if ( ($firstLevelRef) } # foreach(SELF::$_secondLevelGeoLocations if ($secondLevelMapsData) { echo $output; $js .= "var mapsTwoData=" . json_encode($secondLevelMapsData) . ";\n"; } } # if ( (SELF::$_withGeoLoc) AND (SELF::$_secondLevelGeoLocations) ) return $js; }