• how to run demo city bars using sencha architect


    1. create a project using city bars template in sencha architect

    2. save your project name as CityBars

    3. modify your controll code to:

    Ext.define('CityBars.controller.Business', {
        extend: 'Ext.app.Controller',
    
        config: {
            refs: {
                dataList: '#dataList',
                listCard: '#listCard',
                mainNav: 'mainnav',
                detailCard: 'detailpanel'
            },
    
            control: {
                "#dataList": {
                    itemtap: 'onListItemTap'
                },
                "detailpanel #callButton": {
                    tap: 'onCallButtonTap'
                },
                "detailpanel > map": {
                    activate: 'onMapActivate'
                }
            }
        },
    
        onListItemTap: function(dataview, index, target, record, e, eOpts) {
            var map,
                info,
                details;
    
            if (record) {
                details = Ext.create('CityBars.view.DetailPanel', {
                    title: 'Details'
                });
    
                // set the map
                map = details.child('#detailMap');
                map._record = record;
    
                // set the info
                info = details.child('#contact').child('#info');
                info.child('#photo').setData(record.data);
                info.child('#data').setData(record.data);
    
                this.getMainNav().push(details);
            }
        },
    
        onCallButtonTap: function(button, e, eOpts) {
    
            // TODO: Add custom phone call code here
            window.location = 'tel:555-555-5555';
    
        },
    
        onMapActivate: function(newActiveItem, container, oldActiveItem, eOpts) {
            var map = newActiveItem,
                record = map._record,
                lat = record.get('latitude'),
                lng = record.get('longitude'),
                centerMap = Ext.Function.createDelayed(function() {
                    map.setMapOptions({
                        zoom: 18
                    });
                    map.setMapCenter({
                        latitude: lat,
                        longitude: lng
                    });
                }, 250),
                geocoder, loc;
    
            if (lat && lng) {
                centerMap();
            } else {
                geocoder = this._geocoder || (this._geocoder = new google.maps.Geocoder());
                geocoder.geocode(
                {address: [
                    record.get('address1'),
                    record.get('address2'),
                    record.get('address3'),
                    record.get('city'),
                    record.get('state_code'),
                    record.get('zip')
                ].join(', ')},
                function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        loc = results[0].geometry.location;
                        lat = loc.lat();
                        lng = loc.lng();
                        record.set('latitude', lat);
                        record.set('longitude', lng);
                        centerMap();
                    } else {
                        Ext.Msg.alert("Could not find location: " + status);
                    }
                }
                );
            }
    
        },
    
        launch: function() {
    
            var me = this;
    
            // NOTE ABOUT YELP KEY
            // You must use your own yelp key, available by registering (for free) with Yelp:
            // http://www.yelp.com/developers/getting_started/api_overview
            // (in this app, we use the Review Search API v1.0)
            me.apiKey = '8UUJ-jfiOwttLyzTC56F6A'; // enter your own yelp key here
    
            // Get the location, then find businesses
            Ext.Viewport.setMasked({ xtype: 'loadmask', message: 'Loading...' });
            me.getLocation(function (location) {
    
                // then use Yelp to get the businesses
                me.getBusinesses(location, function (store) {
    
                    // then bind data to list and show it
                    me.getDataList().setStore(store);
    
                    Ext.Viewport.setMasked(false);
    
                });
    
            });
    
        },
    
        getLocation: function(callback) {
            if (navigator && navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function(position) {
                    callback(position);
                }, function(error) {
                    // give a warning for error
                });
            }
        },
    
        getBusinesses: function(location, callback) {
    
            var store = Ext.data.StoreManager.lookup('BusinessStore'),
                url = 'http://api.yelp.com/business_review_search' +
                '?ywsid=' + this.apiKey +
                '&term=Bars' +
                '&lat=37.785834' + //location.coords.latitude +
                '&long=-122.406417';// + location.coords.longitude;
            store.getProxy().setUrl(url);
            store.load(function() {
                callback(store);
            });
    
        }
    
    });

    4. run sencha cmd to launch your application on your web server

    sencha fs web start -map /Users/user1/Documents/CityBars

    5. visit your web using the url , which likes the following format:http://localhost:1841

  • 相关阅读:
    Android5.0之Activity的转场动画
    Android5.0之CardView的使用
    Android5.0之CoordinatorLayout的使用
    Android5.0之NavigationView的使用
    Android开发之Bitmap二次采样
    android自定义View之NotePad出鞘记
    android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索
    android自定义View之钟表诞生记
    Spring经典高频面试题,原来是长这个样子
    Redis: 缓存过期、缓存雪崩、缓存穿透、缓存击穿(热点)、缓存并发(热点)、多级缓存、布隆过滤器
  • 原文地址:https://www.cnblogs.com/zyip/p/3526217.html
Copyright © 2020-2023  润新知