【发布时间】:2011-09-23 21:08:57
【问题描述】:
我正在优化移动网站。我们有一个位置页面,其中包含有关位置的信息和通过 Google Maps API 绘制的位置地图。 (v2 - 我知道它已被弃用,但我没有证明升级的时间是合理的,“如果它没有损坏..”)我想使用单列布局,其中包含基本信息,然后是地图,然后是更多信息。
现在,当我用手指在 iPhone 上向下滚动移动页面时,一旦我到达地图,页面滚动就会被覆盖,地图开始平移。我向下滚动页面的唯一方法是将手指放在地图上方或下方,假设这样的空间可用。如果我禁用地图拖动,那么当我开始向下滚动并到达地图时,它不会平移,但页面也不会滚动。我想将地图视为可以滚动过去的静态图像,但仍允许缩放按钮并允许通过我编码的选择字段使用方向重绘地图,因此literal static image 不是解决方案。
我找到了this post that required similar functionality,但它使用的是 v3。我认为我需要做的就是“将触摸事件添加到地图容器”,但我不熟悉 javascript 的那部分,并且我在下面的内容不允许正常滚动。我是否需要在 v3 上咬紧牙关,还是在添加触摸事件时遇到错误,该错误具有简单的 javascript 更正来执行我想要的操作?
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
geocoder = new GClientGeocoder();
}
}
function showAddress(address, zoom) {
//clipped... this part works fine
}
//These three lines create a map that my finger pans
initialize();
showAddress("[clipped.. street, zip code]");
map.addControl(new GSmallZoomControl3D());
//This stops the map pan but still prevents normal page finger scrolling
map.disableDragging();
//If done right could this allow normal page finger scrolling??
var dragFlag = false;
map.addEventListener("touchstart", function(e){
dragFlag = true;
start = (events == "touch") ? e.touches[0].pageY : e.clientY;
},true);
map.addEventListener("touchend", function(){
dragFlag = false;
}, true);
map.addEventListener("touchmove",function(
if ( !dragFlag ) return;
end = (events == "touch") ? e.touches[0].pageY : e.clientY;
window.scrollBy( 0,( start - end ) );
}, true);
我也尝试将map.addEventListener 替换为document.getElementById("map_canvas").addEventListener 或document.addEventListener 无济于事。
【问题讨论】:
-
地图位于 Google 托管的 iframe 中,除非 Google 允许您使用 JavaScript 切换,否则您可能不走运。 API v2 已被弃用,所以如果您发现使用版本 3 的东西可以工作,为什么不进行切换呢? API v3 具有更多功能并且更易于使用,恕我直言,无论如何。 (一个不需要更多的 API 密钥!)
-
在发布之前我开始研究 v3。没有 API 密钥很好,但我们需要使用地理编码功能,它看起来确实需要 API 密钥,而且它的响应看起来比 v2 更复杂,我们还有一些其他页面也在使用它。基本上,我试图通过快速修复 v2 来避免为 v3 重新编码几个小时,但如果这不可能,我会放弃并进行明智的升级。
-
我现在已升级到 v3,但无法让触摸事件正常工作。我正在仔细研究我的 javascript 是否有错误,但我无法让触摸事件响应任何内容。
-
最好的办法是删除整个问题,然后为这个新问题开始一个新问题。
标签: javascript iphone mobile google-maps-api-3 google-maps-api-2