2016-05-04 21 views
0

地图中心我们有一个输入框和一个弹出与此模板提交:谷歌地图的地方传递的localStorage在新窗口中

<input type="text" size="50" placeholder="Your adventure is waiting!" id="mapitplace" /> 
<input type="submit" value="Map It!" id="mapitsubmit"/> 

和JS:

function MapItUp() { 
    var mapitplace = new google.maps.places.Autocomplete(document.getElementById('mapitplace')); 
    localStorage.mapitupp = mapitplace; 
    jQuery('#mapitsubmit').click(function(){ 
    location.href = "http://roadtripsharing.com/map-it"; 
    }); 
    return false; 
} 

举一个例子,你可以点击“Map It!”在roadtripsharing.com的方向盘上显示弹出框,在文本输入框中输入一个地方,然后点击绿色的地图!按钮。此按钮可打开新的位置/地图它

<div id="mapitmap"></div> 

function initMapIt() { 
    var mapit = new google.maps.Map(document.getElementById('mapitmap'), { 
     center: {lat: 39, lng: -105}, 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    if (localStorage.mapitupp !== null){ 
     var mapitupp = localStorage.mapitupp; 
     var mapittupp = mapitupp.getplace(); 
     if (mapittupp.geometry.viewport) { 
     mapit.fitBounds(mapittupp.geometry.viewport); 
     } 
     else { 
     mapit.setCenter(mapittupp.geometry.location); 
     mapit.setZoom(17); 
     } 
    console.log(mapittupp); 
    } 
} 

通过地图的绘制在变焦指示3.没有看到mapitupp或任何的控制台日志initMapIt加载证据正在通过。

有上/地图它控制台错误:

(指数):1102未捕获的ReferenceError:mapitupp没有定义

代mapittupp = localStorage.mapitupp.getplace();对于mapittupp = mapitupp.getplace();给人的控制台错误(也/地图吧):

(指数):1102遗漏的类型错误:localStorage.mapitupp.getplace不是一个函数

我已经阅读Q的和有关JSON的字符串化和解析,但我试图传递一个字符串(mapitupp或localStorage.mapitupp不确定正确的方式来说,但它应该有文本字段#mapitplace的值。

你可以帮助保存变量mapitupp的语法localstorage放在第一页上,然后检索它以转换为地点对象,并使其成为在#mapitmap中打开的新地图的中心?

+1

是什么'localStorage.mapitupp'的价值? – Sampath

+0

我想存储值mapitplace.getPlace();然而,如果传递一个文本字符串的mapitplace更容易,那么这可能更好? – javaandy

+1

不,我在问这是什么值返回'mapitplace.getPlace()'?那是布尔值吗? – Sampath

回答

0

根据此localStorage.mapitupp = mapitplace.getPlace();localStorage的值应该是string

那么你怎么能像这样使用if (localStorage.mapitupp){?要这样使用它localStorage.mapitupp必须是True/False值。所以你的问题是在那个地方。

0

试图通过localStorage传递一个位置对象不起作用。我的解决方案是传递place_id字符串。

function MapItUp() { 
    var mapitplace = new google.maps.places.Autocomplete(document.getElementById('mapitplace')); 
jQuery('#mapitsubmit').click(function(){ 
var mappitplace = mapitplace.getPlace(); 
var placetopass = mappitplace.place_id; 
localStorage.setItem('placetopass', placetopass); 
location.href = "http://roadtripsharing.com/map-it"; 
}); 
return false; 
} 

,并得到它,并在地图中使用:

function initMapIt() {  
    var mapit = new google.maps.Map(document.getElementById('mapitmap'), { 
    center: {lat: 39, lng: -105}, 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 
    if (localStorage.placetopass !== null){ 
    var rtsgeocoder = new google.maps.Geocoder; 
    var rtsinfowindow = new google.maps.InfoWindow; 
    var newplace = localStorage.getItem('placetopass'); 
    rtsgeocoder.geocode({'placeId': newplace}, function(results, status) { 
if (status === google.maps.GeocoderStatus.OK) { 
    if (results[0]) { 
    mapit.setZoom(11); 
    mapit.setCenter(results[0].geometry.location); 
    var rtsmarker = new google.maps.Marker({ 
     map: mapit, 
     position: results[0].geometry.location 
    }); 
    rtsinfowindow.setContent(results[0].formatted_address+'<p>Yeah, buddy!</p>'); 
    rtsinfowindow.open(mapit, rtsmarker); 
    } else { 
    window.alert('No results found'); 
    } 
} else { 
    window.alert('Geocoder failed due to: ' + status); 
} 
}); 
} 
else { 

} 
}