1
function addDoctorLocation(lat,longt) 
    {
      var myLatlng = new google.maps.LatLng(parseFloat(lat), parseFloat(longt));
      var myOptions = {
        zoom: 10,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }
     //var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

     var marker = new google.maps.Marker({
          position: myLatlng,
          title:"Hello World!"
      });

      // To add the marker to the map, call setMap();
      var map = Ext.getCmp('mygooglemap');
      marker.setMap(map); 
    }

var btn= Ext.getCmp('button');
btn.on('onclick', function(){
            addDoctorLocation(3.951941,102.052002);
    })

mygooglemapはGMappanelであり
、ボタンをクリックすると、gmappanelは座標付きのマーカーを追加します3.951941,102.052002か?このコードを試しましたが、それでも機能しませんか?

アップデート

チェックボックスはどうですか?

tree.on('checkchange', function(node){
  var data = node.data;
  if (data.checked = true){
     var options = {
       lat:3.951941,
       lng:-102.052002,
       marker: {title:"Hello World!"},
       listeners: {
         click: function(e){
         }
       }     
     }
     addDoctorLocation(options);
  }     
})

マップの作成

var layout = Ext.create('Ext.panel.Panel', {
            //renderTo: 'layout',
            width: window.innerWidth,
            height: window.innerHeight,
            //title: 'Border Layout', //no title will be blank
            layout: 'border',
            items: [{
                title: 'Message List',
                region: 'south',     // position for region
                xtype: 'panel',
                height: 100,
                split: true,         // enable resizing
                collapsible: true,
                margins: '0 5 5 5',
                collapsed: true
            },tree,{
                    xtype: 'gmappanel',
                    id : 'mygooglemap',
                    gmapType: 'map',
                    zoomLevel: 7,
                    mapConfOpts: ['enableScrollWheelZoom','enableDoubleClickZoom','enableDragging'],
                    mapControls: ['GSmallMapControl','GMapTypeControl','NonExistantControl'],  
                    setCenter: {
                        lat: 3.951941,
                        lng: 102.052002,
                    }
                }],
            renderTo: Ext.getBody() //get the body and display Layout at there
        });
    });

fireBugをチェックした後、エラーは次のとおりです。

ReferenceError: GLatLng is not defined
[Break On This Error]   
var mpoint = new GLatLng(options.lat,options.lng);

私は以下のようにコードを編集しました、うまくいきます

function addDoctorLocation(options) 
{
 var gm = Ext.getCmp('mygooglemap');
 var mpoint = new google.maps.LatLng(options.lat,options.lng);
 gm.addMarker(mpoint,options.marker,false,false, options.listeners);
}
4

1 に答える 1

2
var btn= Ext.getCmp('button');
btn.on('onclick', function(){
  var options = {
    lat:3.951941,
    lng:-102.052002,
    marker: {title:"Hello World!"},
    listeners: {
     click: function(e){

     }
    }                
   }     
   addDoctorLocation(options);
})

function addDoctorLocation(options) 
{

 var gm = Ext.getCmp('mygooglemap');
 var mpoint = new GLatLng(options.lat,options.lng);
 gm.addMarker(mpoint,options.marker,false,false, options.listeners);
}

注:-このコードは、中心点以外のマーカーを追加するためのものです。この時点で、「id:mygooglemap」を使用してマップを作成する必要があります。コードを見ると、既存のマップにマーカーを追加するのではなく、新しいマップを作成しようとしているように見えます。

extjsパッケージに付属するaddMarker関数については、いつでもGMapPanel.jsファイルを参照できます。私は古いバージョンを持っているので、addMarker呼び出しはそれに応じています。

于 2013-02-21T21:54:35.187 に答える