Exemple #1
0
 /**
  * Build js string to create the map js object
  *
  * @return string
  */
 public function getJs()
 {
     $this->setPrefilters();
     $params = $this->getParams();
     if (!$this->getRequiredFiltersFound() && $params->get('fb_gm_always_show_map', '0') != '1') {
         return '';
     }
     $app = JFactory::getApplication();
     $input = $app->input;
     $params = $this->getParams();
     $viz = $this->getVisualization();
     $opts = new stdClass();
     $opts->lat = 0;
     $opts->lon = 0;
     $opts->icons = $this->getJSIcons();
     $opts->polyline = $this->getPolyline();
     $opts->id = $viz->id;
     $opts->zoomlevel = (int) $params->get('fb_gm_zoomlevel');
     $opts->scalecontrol = (bool) $params->get('fb_gm_scalecontrol');
     $opts->scrollwheel = (bool) $params->get('fb_gm_scrollwheelcontrol');
     $opts->maptypecontrol = (bool) $params->get('fb_gm_maptypecontrol');
     $opts->overviewcontrol = (bool) $params->get('fb_gm_overviewcontrol');
     $opts->streetView = (bool) $params->get('street_view');
     $opts->center = $params->get('fb_gm_center');
     if ($opts->center == 'querystring') {
         $opts->lat = $input->get('latitude', '') == '' ? $opts->lat : (double) $input->get('latitude');
         $opts->lon = $input->get('longitude', '') == '' ? $opts->lon : (double) $input->get('longitude');
         $opts->zoomlevel = $input->get('zoom', '') == '' ? $opts->zoomlevel : $input->get('zoom');
     }
     $opts->ajax_refresh = (bool) $params->get('fb_gm_ajax_refresh', false);
     $opts->ajax_refresh_center = (bool) $params->get('fb_gm_ajax_refresh_center', true);
     $opts->maptype = $params->get('fb_gm_maptype');
     $opts->clustering = (bool) $params->get('fb_gm_clustering', '0') == '1';
     $opts->cluster_splits = $params->get('fb_gm_cluster_splits');
     $opts->icon_increment = $params->get('fb_gm_cluster_icon_increment');
     $opts->refresh_rate = $params->get('fb_gm_ajax_refresh_rate');
     $opts->use_cookies = (bool) $params->get('fb_gm_use_cookies');
     $opts->container = $this->getContainerId();
     $opts->polylinewidth = (array) $params->get('fb_gm_polyline_width');
     $opts->polylinecolour = (array) $params->get('fb_gm_polyline_colour');
     $usePolygon = (array) $params->get('fb_gm_use_polygon');
     $opts->use_polygon = (bool) JArrayHelper::getValue($usePolygon, 0, true);
     $opts->polygonopacity = $params->get('fb_gm_polygon_fillOpacity', 0.35);
     $opts->polygonfillcolour = (array) $params->get('fb_gm_polygon_fillColor');
     $opts->overlay_urls = (array) $params->get('fb_gm_overlay_urls');
     $opts->overlay_labels = (array) $params->get('fb_gm_overlay_labels');
     $opts->use_overlays = (int) $params->get('fb_gm_use_overlays', '0');
     $opts->use_overlays_sidebar = $opts->use_overlays && (int) $params->get('fb_gm_use_overlays_sidebar', '0');
     $opts->use_groups = (bool) $params->get('fb_gm_group_sidebar', 0);
     $opts->groupTemplates = $this->getGroupTemplates();
     $opts->zoomStyle = (int) $params->get('fb_gm_zoom_control_style', 0);
     $opts->zoom = $params->get('fb_gm_zoom', 1);
     $opts->show_radius = $params->get('fb_gm_use_radius', '1') == '1' ? true : false;
     $opts->radius_defaults = (array) $params->get('fb_gm_radius_default');
     $opts->radius_fill_colors = (array) $params->get('fb_gm_radius_fill_color');
     $opts->styles = FabGoogleMapHelper::styleJs($params);
     $opts = json_encode($opts);
     $ref = $this->getJSRenderContext();
     $js = array();
     $js[] = "\t{$ref} = new FbGoogleMapViz('table_map', {$opts})";
     $js[] = "\t" . "Fabrik.addBlock('{$ref}', {$ref});";
     $js[] = "\n";
     return implode("\n", $js);
 }
Exemple #2
0
 /**
  * Returns javascript which creates an instance of the class defined in formJavascriptClass()
  *
  * @param   int  $repeatCounter  Repeat group counter
  *
  * @return  array
  */
 public function elementJavascript($repeatCounter)
 {
     $params = $this->getParams();
     $id = $this->getHTMLId($repeatCounter);
     $element = $this->getElement();
     $formModel = $this->getFormModel();
     $data = $formModel->data;
     $v = $this->getValue($data, $repeatCounter);
     $zoomlevel = (int) $params->get('fb_gm_zoomlevel');
     $o = $this->_strToCoords($v, $zoomlevel);
     $dms = $this->_strToDMS($v);
     $opts = $this->getElementJSOptions($repeatCounter);
     $this->geoJs();
     $this->OSRefJs();
     $mapShown = $this->isEditable() || !$this->isEditable() && $v != '';
     $opts->lat = (double) $o->coords[0];
     $opts->lon = (double) $o->coords[1];
     $opts->lat_dms = (double) $dms->coords[0];
     $opts->rowid = (int) FArrayHelper::getValue($data, 'rowid');
     $opts->lon_dms = (double) $dms->coords[1];
     $opts->zoomlevel = (int) $o->zoomlevel;
     $opts->control = $params->get('fb_gm_mapcontrol');
     $opts->scalecontrol = (bool) $params->get('fb_gm_scalecontrol');
     $opts->maptypecontrol = (bool) $params->get('fb_gm_maptypecontrol');
     $opts->overviewcontrol = (bool) $params->get('fb_gm_overviewcontrol');
     $opts->traffic = (bool) $params->get('fb_gm_trafficlayer', '0');
     $opts->drag = (bool) $formModel->isEditable();
     $opts->staticmap = $this->_useStaticMap() ? true : false;
     $opts->maptype = $params->get('fb_gm_maptype');
     $opts->scrollwheel = (bool) $params->get('fb_gm_scroll_wheel');
     $opts->streetView = (bool) $params->get('fb_gm_street_view');
     $opts->latlng = $this->isEditable() ? (bool) $params->get('fb_gm_latlng', false) : false;
     $opts->sensor = (bool) $params->get('fb_gm_sensor', false);
     $opts->latlng_dms = $this->isEditable() ? (bool) $params->get('fb_gm_latlng_dms', false) : false;
     $opts->latlng_osref = $this->isEditable() ? (bool) $params->get('fb_gm_latlng_osref', false) : false;
     $opts->geocode = $params->get('fb_gm_geocode', '0');
     $opts->geocode_event = $params->get('fb_gm_geocode_event', 'button');
     $opts->geocode_fields = array();
     // geocode_on_load, 0 = no, 1 = new, 2 = edit, 3 = always
     $geocode_on_load = $params->get('fb_gm_geocode_on_load', '0');
     $opts->geocode_on_load = $this->isEditable() && ($geocode_on_load == 1 && $formModel->isNewRecord() || $geocode_on_load == 2 && !$formModel->isNewRecord() || $geocode_on_load == 3);
     $opts->auto_center = (bool) $params->get('fb_gm_auto_center', false);
     $opts->styles = FabGoogleMapHelper::styleJs($params);
     if ($opts->geocode == '2') {
         foreach (array('addr1', 'addr2', 'city', 'state', 'zip', 'country') as $which_field) {
             $field_id = '';
             if ($field_id = $this->_getGeocodeFieldId($which_field, $repeatCounter)) {
                 $opts->geocode_fields[] = $field_id;
             }
         }
         // remove any duplicates in case they have misunderstood and selected the same element for all fields
         $opts->geocode_fields = array_unique($opts->geocode_fields);
     }
     $opts->reverse_geocode = $params->get('fb_gm_reverse_geocode', '0') == '0' ? false : true;
     if ($opts->reverse_geocode) {
         foreach (array('route' => 'addr1', 'neighborhood' => 'addr2', 'locality' => 'city', 'administrative_area_level_1' => 'state', 'postal_code' => 'zip', 'country' => 'country', 'formatted_address' => 'formatted_address') as $google_field => $which_field) {
             $field_id = '';
             if ($field_id = $this->_getGeocodeFieldId($which_field, $repeatCounter)) {
                 $opts->reverse_geocode_fields[$google_field] = $field_id;
             }
         }
     }
     $opts->center = (int) $params->get('fb_gm_defaultloc', 0);
     $opts->use_radius = $params->get('fb_gm_radius', '0') == '0' || !$mapShown ? false : true;
     $opts->radius_fitmap = $params->get('fb_gm_radius_fitmap', '0') == '0' ? false : true;
     $opts->radius_write_element = $opts->use_radius ? $this->_getFieldId('fb_gm_radius_write_element', $repeatCounter) : false;
     $opts->radius_read_element = $opts->use_radius ? $this->_getFieldId('fb_gm_radius_read_element', $repeatCounter) : false;
     $opts->radius_ro_value = $opts->use_radius ? $this->_getFieldValue('fb_gm_radius_read_element', $data, $repeatCounter) : false;
     $opts->radius_default = $params->get('fb_gm_radius_default', '50');
     if ($opts->radius_ro_value === false) {
         $opts->radius_ro_value = $opts->radius_default;
     }
     $opts->radius_unit = $params->get('fb_gm_radius_unit', 'm');
     $opts->radius_resize_icon = COM_FABRIK_LIVESITE . 'media/com_fabrik/images/radius_resize.png';
     $opts->radius_resize_off_icon = COM_FABRIK_LIVESITE . 'media/com_fabrik/images/radius_resize.png';
     if ($this->app->input->get('view', '') === 'details') {
         $opts->directionsFromElement = $this->_getFieldId('fb_gm_directions_from', $repeatCounter);
         if ($opts->directionsFromElement !== false) {
             $directionsFromCoords = $this->_getFieldValue('fb_gm_directions_from', $data, $repeatCounter);
             $o = $this->_strToCoords($directionsFromCoords, 14);
             $opts->directionsFromLat = trim($o->coords[0]);
             $opts->directionsFromLon = trim($o->coords[1]);
             $opts->directionsFrom = true;
         }
     } else {
         $opts->directionsFrom = false;
     }
     return array('FbGoogleMap', $id, $opts);
 }
Exemple #3
0
 /**
  * Returns javascript which creates an instance of the class defined in formJavascriptClass()
  *
  * @param   int  $repeatCounter  Repeat group counter
  *
  * @return  array
  */
 public function elementJavascript($repeatCounter)
 {
     $params = $this->getParams();
     $id = $this->getHTMLId($repeatCounter);
     $element = $this->getElement();
     $formModel = $this->getFormModel();
     $data = $formModel->data;
     $v = $this->getValue($data, $repeatCounter);
     $zoomlevel = (int) $params->get('fb_gm_zoomlevel');
     $o = $this->_strToCoords($v, $zoomlevel);
     $dms = $this->_strToDMS($v);
     $opts = $this->getElementJSOptions($repeatCounter);
     $this->geoJs();
     $mapShown = $this->isEditable() || !$this->isEditable() && $v != '';
     $opts->lat = (double) $o->coords[0];
     $opts->lon = (double) $o->coords[1];
     $opts->lat_dms = (double) $dms->coords[0];
     $opts->rowid = (int) JArrayHelper::getValue($data, 'rowid');
     $opts->lon_dms = (double) $dms->coords[1];
     $opts->zoomlevel = (int) $o->zoomlevel;
     $opts->control = $params->get('fb_gm_mapcontrol');
     $opts->scalecontrol = (bool) $params->get('fb_gm_scalecontrol');
     $opts->maptypecontrol = (bool) $params->get('fb_gm_maptypecontrol');
     $opts->overviewcontrol = (bool) $params->get('fb_gm_overviewcontrol');
     $opts->drag = (bool) $formModel->isEditable();
     $opts->staticmap = $this->_useStaticMap() ? true : false;
     $opts->maptype = $params->get('fb_gm_maptype');
     $opts->scrollwheel = (bool) $params->get('fb_gm_scroll_wheel');
     $opts->streetView = (bool) $params->get('fb_gm_street_view');
     $opts->latlng = $this->isEditable() ? (bool) $params->get('fb_gm_latlng', false) : false;
     $opts->sensor = (bool) $params->get('fb_gm_sensor', false);
     $opts->latlng_dms = $this->isEditable() ? (bool) $params->get('fb_gm_latlng_dms', false) : false;
     $opts->geocode = $params->get('fb_gm_geocode', '0');
     $opts->geocode_event = $params->get('fb_gm_geocode_event', 'button');
     $opts->geocode_fields = array();
     $opts->auto_center = (bool) $params->get('fb_gm_auto_center', false);
     $opts->styles = FabGoogleMapHelper::styleJs($params);
     if ($opts->geocode == '2') {
         foreach (array('addr1', 'addr2', 'city', 'state', 'zip', 'country') as $which_field) {
             $field_id = '';
             if ($field_id = $this->_getGeocodeFieldId($which_field, $repeatCounter)) {
                 $opts->geocode_fields[] = $field_id;
             }
         }
     }
     $opts->reverse_geocode = $params->get('fb_gm_reverse_geocode', '0') == '0' ? false : true;
     if ($opts->reverse_geocode) {
         foreach (array('route' => 'addr1', 'neighborhood' => 'addr2', 'locality' => 'city', 'administrative_area_level_1' => 'state', 'postal_code' => 'zip', 'country' => 'country') as $google_field => $which_field) {
             $field_id = '';
             if ($field_id = $this->_getGeocodeFieldId($which_field, $repeatCounter)) {
                 $opts->reverse_geocode_fields[$google_field] = $field_id;
             }
         }
     }
     $opts->center = (int) $params->get('fb_gm_defaultloc', 0);
     $opts->use_radius = $params->get('fb_gm_radius', '0') == '0' || !$mapShown ? false : true;
     $opts->radius_fitmap = $params->get('fb_gm_radius_fitmap', '0') == '0' ? false : true;
     $opts->radius_write_element = $opts->use_radius ? $this->_getFieldId('fb_gm_radius_write_element', $repeatCounter) : false;
     $opts->radius_read_element = $opts->use_radius ? $this->_getFieldId('fb_gm_radius_read_element', $repeatCounter) : false;
     $opts->radius_ro_value = $opts->use_radius ? $this->_getFieldValue('fb_gm_radius_read_element', $data, $repeatCounter) : false;
     $opts->radius_default = $params->get('fb_gm_radius_default', '50');
     if ($opts->radius_ro_value === false) {
         $opts->radius_ro_value = $opts->radius_default;
     }
     $opts->radius_unit = $params->get('fb_gm_radius_unit', 'm');
     $opts->radius_resize_icon = COM_FABRIK_LIVESITE . 'media/com_fabrik/images/radius_resize.png';
     $opts->radius_resize_off_icon = COM_FABRIK_LIVESITE . 'media/com_fabrik/images/radius_resize.png';
     return array('FbGoogleMap', $id, $opts);
 }