2013-11-15 17 views
9

khi tôi sử dụng sencha touch2.2.1, tôi đã gặp một câu hỏi. Trong trình xem:Uncaught InvalidValueError: setMap: không phải là bản sao của Bản đồ

items: [{ 
    id: 'mapCanvas', 
    xtype:'map', 
    useCurrentLocation: true, 
}] 

Trong bộ điều khiển:

var map= Ext.getCmp('mapCanvas'); 
console.dir(map); 
var marker= new google.maps.Marker({ 
       position: new google.maps.LatLng(25,118), 
      }); 
marker.setMap(map); 

báo cáo lỗi:

của router InvalidValueError: setMap: không phải là một thể hiện của bản đồ, và không phải là một thể hiện của StreetViewPanorama

Tôi có thể xem bản đồ, nhưng tôi không thể thấy điểm đánh dấu và cách giải quyết sự cố?

Trả lời

0

Phương thức marker.setMap hy vọng đối số là đối tượng google.maps.Map. Đây không phải là một trong những:

var map= Ext.getCmp('mapCanvas'); 
0

Hãy thử điều này:

var latlngbounds = new google.maps.LatLngBounds(), 
    position = new google.maps.LatLng(25,118), 
    marker = new google.maps.Marker({ 
      position : position, 
      map : map 
     }); 

latlngbounds.extend(position); 

map.fitBounds(latlngbounds); 

Đây map là render google.map.Map dụ

13

Hãy thử điều này:

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

Nó làm việc cho tôi!

+2

khác biệt giữa setMap và bản đồ là gì? – Notflip

+0

Làm việc cho tôi quá ... –

+0

Jip, tôi có thể xác nhận điều này cũng có tác dụng với tôi .... nhưng tôi không biết tại sao? Một số thông tin sẽ là tuyệt vời! –

5

map không phải là bản sao của bản đồ google.

var map= Ext.getCmp('mapCanvas').getMap(); // add getMap() here to get the map instance 
console.dir(map); 
var marker= new google.maps.Marker({ 
    position: new google.maps.LatLng(25,118), 
}); 
marker.setMap(map); 
0

mapCanvas là thành phần bản đồ mở giữ bản đồ bản đồ.

var map= Ext.getCmp('mapCanvas'); 
console.dir(map); 
var marker= new google.maps.Marker({ 
        position: new google.maps.LatLng(25,118), 
       }); 
marker.setMap(map.getMap()); 
1

var bản đồ là một phần tử HTML bạn cần một thể hiện của các google.maps.Map Object

var map = google.maps.Map(document.querySelector("#mapCanvas"),{ 
     center: new google.maps.LatLng(24.027872, -104.655278), 
     zoom: 12 
    }); 

rồi ....

var marker= new google.maps.Marker({ 
    position: new google.maps.LatLng(25,118), 
    map: map 
    }); 
1

Bạn có thể thêm các điểm đánh dấu để bản đồ trực tiếp bằng cách sử dụng phương thức setMap() của người đánh dấu, như được hiển thị trong ví dụ bên dưới:

var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
var mapOptions = { 
    zoom: 4, 
    center: myLatlng 
} 
var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

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

// To add the marker to the map, call setMap(); 
marker.setMap(map); 
Các vấn đề liên quan