0

我是 Sencha Touch 的新手,知道 Javascript、jQuery、HTML5。

我正在使用 Sencha Touch + Sencha Architect 开发简单的 Google Map 应用程序,它在当前位置放置标记,还使用 ​​Google Place 在当前位置附近查找“商店”(即需要 Google 地点搜索的类型)。我在“callbackPlaces”(即纬度、经度)中获取位置,但 Google.Maps.Marker 在“callbackPlaces”方法中给出错误(即通过“addMarker”方法调用,我还尝试通过将 Google.Maps.Marker 放入'回调位置')。

Ext.define('MyApp.view.Map', {
    extend: 'Ext.Map',
    alias: 'widget.map',

    config: {
        useCurrentLocation: true,
        listeners: [
            {
                fn: 'onMapMaprender',
                event: 'maprender'
            }
        ]
    },

    onMapMaprender: function(map, gmap, options) {
        this.initializePlaces();
    },

    initializePlaces: function() {

        //Set Marker on Current Position
        var geo = this.getGeo();
        var currentPosition = new google.maps.LatLng(geo.getLatitude(), geo.getLongitude());
        this.createMarker(currentPosition);

        //request set for Places Services
        var request = {
            location: currentPosition,
            radius: 500,
            types: ['store']
        };


        this.getMap().zoom = 15;

        // Call PlacesService
        var service = new google.maps.places.PlacesService(this.getMap());
        service.nearbySearch(request, this.callbackPlaces); 



    },

    callbackPlaces: function(results, status) {

        if (status == google.maps.places.PlacesServiceStatus.OK) {  

            for (var i = 0; i < results.length; i++) {
                addMarker(results[i]);
            }
        }
    },

    createMarker: function(position) {
        //Here Position = Google Map LatLng

        var infoWindow = new google.maps.InfoWindow();

        var marker = new google.maps.Marker({
            map: this.getMap(),
            position: position
        });

        google.maps.event.addListener(marker, "click", function() {    
            infoWindow.setContent("Lng: " + marker.position.lng() + "\n Lat: " + marker.position.lat());
            infoWindow.open(this.getMap(), marker);
        }); 
    },

    addMarker: function() {
        //Here Place = google.maps.places

        var infoWindow = new google.maps.InfoWindow();

        var marker = new google.maps.Marker({
            map: this.getMap(),
            position: place.geometry.location
        });


        google.maps.event.addListener(marker, "click", function() {    
            infoWindow.setContent("Lng: " + marker.position.lng() + "\n Lat: " + marker.position.lat());
            infoWindow.open(this.getMap(), marker);
        }); 
    }

});

我不知道出了什么问题!

任何帮助|提示将不胜感激!

提前致谢。

4

1 回答 1

1

您指出 callbackPlaces 函数中存在范围问题。

因此,您应该替换以下行:

service.nearbySearch(request, this.callbackPlaces); 

service.nearbySearch(request, function (results, status) {
  this.callbackPlaces.call(this, [results, status]);
}); 

希望这可以帮助

于 2013-03-15T10:55:30.663 回答