@@ -477,18 +477,33 @@ weapi.App.prototype.on = function(type, listener) {
477477 e [ 'latitude' ] = null ;
478478 e [ 'longitude' ] = null ;
479479
480- var cartesian = app . camera . camera .
481- pickEllipsoid ( new Cesium . Cartesian2 ( e . offsetX , e . offsetY ) ) ;
482- if ( goog . isDefAndNotNull ( cartesian ) ) {
483- var carto = Cesium . Ellipsoid . WGS84 . cartesianToCartographic ( cartesian ) ;
484-
485- var lat = goog . math . toDegrees ( carto . latitude ) ,
486- lng = goog . math . toDegrees ( carto . longitude ) ;
487- e [ 'latlng' ] = { 'lat' : lat , 'lng' : lng } ;
488- e [ 'latitude' ] = lat ;
489- e [ 'longitude' ] = lng ;
490- e [ 'altitude' ] = carto . height ;
491- e [ 'originalEvent' ] = e . getBrowserEvent ( ) ;
480+ var offsetX = e . offsetX , offsetY = e . offsetY ;
481+ if ( ! goog . isDefAndNotNull ( offsetX ) || ! goog . isDefAndNotNull ( offsetY ) ) {
482+ var origE = e . getBrowserEvent ( ) ;
483+ var pageX = origE . pageX , pageY = origE . pageY ,
484+ touches = origE [ 'touches' ] ;
485+ if ( touches && touches [ 0 ] && ( ! pageX || ! pageY ) ) {
486+ pageX = touches [ 0 ] . pageX ;
487+ pageY = touches [ 0 ] . pageY ;
488+ }
489+ var canvasOffset = goog . style . getPageOffset ( app . canvas ) ;
490+ offsetX = pageX - canvasOffset . x ;
491+ offsetY = pageY - canvasOffset . y ;
492+ }
493+ if ( goog . isDefAndNotNull ( offsetX ) && goog . isDefAndNotNull ( offsetY ) ) {
494+ var cartesian = app . camera . camera .
495+ pickEllipsoid ( new Cesium . Cartesian2 ( offsetX , offsetY ) ) ;
496+ if ( goog . isDefAndNotNull ( cartesian ) ) {
497+ var carto = Cesium . Ellipsoid . WGS84 . cartesianToCartographic ( cartesian ) ;
498+
499+ var lat = goog . math . toDegrees ( carto . latitude ) ,
500+ lng = goog . math . toDegrees ( carto . longitude ) ;
501+ e [ 'latlng' ] = { 'lat' : lat , 'lng' : lng } ;
502+ e [ 'latitude' ] = lat ;
503+ e [ 'longitude' ] = lng ;
504+ e [ 'altitude' ] = carto . height ;
505+ e [ 'originalEvent' ] = e . getBrowserEvent ( ) ;
506+ }
492507 }
493508
494509 listener ( e ) ;
0 commit comments