0

私はSenchaTouchを初めて使用し、Javascript、jQuery、HTML5を知っています。

私はSenchaTouch+ Sencha Architectを使用して、現在の位置にマーカーを配置し、Google Placeを使用して現在の場所の近くにある「ストア」(つまり、Googleプレイス検索に必要なタイプ)を見つけるシンプルなGoogleマップアプリケーションを開発しています。「callbackPlaces」(つまり、緯度、経度)で場所を取得していますが、「callbackPlaces」メソッドでエラーが発生します(つまり、「addMarker」メソッドで呼び出されます。また、Google.Maps.Markerを'callbackPlaces')。

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 に答える