0 Replies Latest reply: Jun 28, 2017 6:47 AM by Kevin Wen RSS

    Google Map var_zoom formula

    Kevin Wen

      Hi experts,

       

      Can you hlep me to understand the script code for Google Map? Because i want use another Map, but looks the location has some skewing. so i want understand the principle and make it match to different Map. key point is "var_zoom" Thank you very much!

      // Google Maps Key
      // get a key here http://code.google.com/apis/maps/signup.html
      //gmap_key = 'xx';
      max_zoom_level = 17; //maximum value 17

      // Variables required for calculating map
      // No need to change these
      var_pi180=              '=pi()/180';
      var_lat_offset= '0';
      var_mc2=                '=256*pow(2,$(var_zoom))';
      var_mc1=                '=256*pow(2,($(var_zoom)-1))';
      var_mid_lat=        '=min(Latitude)+(1+var_lat_offset)*((max(Latitude)-min(Latitude))/2)';
      var_mid_long=   '=min(Longitude)+(max(Longitude)-min(Longitude))/2';
      var_zoom=               '=max(aggr(if(max( round(256*pow(2,(_zoom_level -1)))+( Longitude *((256*pow(2,_zoom_level ))/360)) )-min( round(256*pow(2,(_zoom_level -1)))+( Longitude *((256*pow(2,_zoom_level ))/360)) ) <map_size_x AND max((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((Latitude)*pi()/180)))/(1-(sin((Latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))-min((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((Latitude)*pi()/180)))/(1-(sin((Latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))<map_size_y,_zoom_level,1),_zoom_level))';
      var_maptype= '=if(isnull(only(maptype)),fieldvalue( '&chr(39)&'maptype'&chr(39)&', 1 ),maptype)';
      map_size_x=         '462';
      map_size_y=     '262';

      SET HidePrefix='_' ;
      // Field required for calcualting best zoom level
      _zoom_level:
      Load RecNo( ) as _zoom_level autogenerate(max_zoom_level);

      maptype:
      LOAD * INLINE [
      maptype
      roadmap
      mobile
      satellite
      terrain
      hybrid
      ]
      ;