''); if ($value['VALUE'] <> '') { $arCoords = explode(',', $value['VALUE'], 2); $lat = doubleval($arCoords[0]); $lng = doubleval($arCoords[1]); if ($lat && $lng) $arResult['VALUE'] = $lat.','.$lng; } return $arResult; } public static function ConvertToDB($arProperty, $value) { $arResult = array('VALUE' => ''); if ($value['VALUE'] <> '') { $arCoords = explode(',', $value['VALUE'], 2); $lat = doubleval($arCoords[0]); $lng = doubleval($arCoords[1]); if ($lat && $lng) $arResult['VALUE'] = $lat.','.$lng; } return $arResult; } public static function _GetMapKey($map_type, &$strDomain) { $MAP_KEY = ''; $strMapKeys = COPtion::GetOptionString('fileman', 'map_'.$map_type.'_keys'); $strDomain = $_SERVER['HTTP_HOST']; $wwwPos = mb_strpos($strDomain, 'www.'); if ($wwwPos === 0) $strDomain = mb_substr($strDomain, 4); if ($strMapKeys) { $arMapKeys = unserialize($strMapKeys, ['allowed_classes' => false]); if (array_key_exists($strDomain, $arMapKeys)) $MAP_KEY = $arMapKeys[$strDomain]; } return $MAP_KEY; } } class CIBlockPropertyMapGoogle extends CIBlockPropertyMapInterface { public static function GetUserTypeDescription() { return array( "PROPERTY_TYPE" => "S", "USER_TYPE" => "map_google", "DESCRIPTION" => GetMessage("IBLOCK_PROP_MAP_GOOGLE"), "GetPropertyFieldHtml" => array(__CLASS__,"GetPropertyFieldHtml"), "GetPublicViewHTML" => array(__CLASS__,"GetPublicViewHTML"), "ConvertToDB" => array(__CLASS__,"ConvertToDB"), "ConvertFromDB" => array(__CLASS__,"ConvertFromDB"), "GetSettingsHTML" => array(__CLASS__, "GetSettingsHTML"), "PrepareSettings" => array(__CLASS__, "PrepareSettings"), 'GetUIEntityEditorProperty' => array(__CLASS__, 'GetUIEntityEditorProperty'), 'GetUIEntityEditorPropertyEditHtml' => array(__CLASS__, 'GetUIEntityEditorPropertyEditHtml'), 'GetUIEntityEditorPropertyViewHtml' => array(__CLASS__, 'GetUIEntityEditorPropertyViewHtml'), ); } public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields) { $arPropertyFields = array( 'HIDE' => array('ROW_COUNT', 'COL_COUNT', 'SMART_FILTER', 'FILTRABLE', 'SEARCHABLE', 'WITH_DESCRIPTION'), 'SET' => array('SMART_FILTER' => 'N', 'FILTRABLE' => 'N', 'SEARCHABLE' => 'N') ); $settings = \CIBlockPropertyMapGoogle::PrepareSettings($arProperty); $settings = $settings['USER_TYPE_SETTINGS']; $apiKey = isset($settings['API_KEY']) ? htmlspecialcharsbx($settings['API_KEY']) : ''; return ' '.GetMessage('IBLOCK_PROP_G_MAP_API_KEY').': '; } public static function PrepareSettings($arProperty) { $arProperty['SMART_FILTER'] = 'N'; $arProperty['FILTRABLE'] = 'N'; $arProperty['SEARCHABLE'] = 'N'; $arProperty['USER_TYPE_SETTINGS'] = array( 'API_KEY' => isset($arProperty['USER_TYPE_SETTINGS']['API_KEY']) ? $arProperty['USER_TYPE_SETTINGS']['API_KEY'] : '' ); return $arProperty; } public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) { global $APPLICATION; static $googleMapLastNumber = 0; static $googleMapID = ''; if (($arProperty['MULTIPLE'] == 'Y' && $googleMapID !== $arProperty['ID']) || $arProperty['MULTIPLE'] == 'N') $googleMapLastNumber = 0; if ($arProperty['MULTIPLE'] == 'Y') $googleMapID = $arProperty['ID']; $apiKey = isset($arProperty['USER_TYPE_SETTINGS']['API_KEY']) ? $arProperty['USER_TYPE_SETTINGS']['API_KEY'] : ''; if ($strHTMLControlName["MODE"] != "FORM_FILL") return ''; if ($value['VALUE'] <> '') { list($POINT_LAT, $POINT_LON) = explode(',', $value['VALUE'], 2); $bHasValue = true; } else { $POINT_LAT = doubleval(GetMessage('IBLOCK_PROP_MAP_GOOGLE_INIT_LAT')); $POINT_LON = doubleval(GetMessage('IBLOCK_PROP_MAP_GOOGLE_INIT_LON')); $bHasValue = false; } ob_start(); if ($arProperty['MULTIPLE'] == 'Y' && isset($GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']])) { // property is multimple and map is already showed $MAP_ID = $GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']]; } else { $MAP_ID = 'map_google_'.$arProperty['CODE'].$arProperty['ID']; $GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']] = $MAP_ID; ?> IncludeComponent( 'bitrix:map.google.system', '', array( 'INIT_MAP_TYPE' => 'NORMAL', 'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64, 'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76, 'INIT_MAP_SCALE' => 10, 'OPTIONS' => array('ENABLE_SCROLL_ZOOM', 'ENABLE_DRAGGING'), 'CONTROLS' => array('LARGE_MAP_CONTROL', 'HTYPECONTROL', 'MINIMAP', 'SCALELINE', 'SMALL_ZOOM_CONTROL'), 'MAP_WIDTH' => '95%', 'MAP_HEIGHT' => 400, 'MAP_ID' => $MAP_ID, 'DEV_MODE' => 'Y', 'API_KEY' => $apiKey ), false, array('HIDE_ICONS' => 'Y') ); //http://jabber.bx/view.php?id=17908 ?>
,