Uncaught reference error: terratype is not defined
Hi,
I've recently started using your package and was wanting to play about with the clusterer settings using terratype.onRender. However when I load the page with the map, I receive the Uncaught ReferenceError: terratype is not defined.
I suspect you are trying to access the js object terratype before it has been defined. It gets loaded, the first time you call the @Html.Terratype in your razor page.
To give an Razor example to make it clear
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using Terratype
@{
Layout = null;
}
<html>
<head>
// mymapcode.js can't contain any references to terratype object, as its not defined yet
<script src="mymapcode.js"></script>
<script>
// The line below will fail because terratype still doesn't exist yet
terratype.onRender(function (p, m) {
alert('terratype doesn't exist');
});
</script>
</head>
<body>
<script>
// The line below will fail because terratype still doesn't exist yet
terratype.onRender(function (p, m) {
alert('terratype doesn't exist');
});
</script>
@* This is the line of code that will define the terratype object *@
@Html.Terratype(Model.Content.MyMap)
@* From this point on, the js object called terratype exists *@
<script>
// This line will succeed because it is after the Html.Terratype command which defined terratype
terratype.onRender(function (p, m) {
alert('Woohoo we will work');
});
</script>
@* mymapcode2.js can contain references to terratype object, as it does now exist *@
<script src="mymapcode2.js"></script>
</body>
</html>
I called the terratype.onRender after I defined the terratype but couldn't get it working.
var map2 = mapContent.GetPropertyValue<Terratype.Models.Model>("mapMarker");
map2.Icon.Url = new Uri("https://mt.google.com/vt/icon/name=icons/spotlight/spotlight-poi.png?type=" + testType + "&town=" + townName);
if( (map2 != null) && (map2.Position.ToString().Length > 0 ) ){
@Html.Terratype(new Options{MapSetId=9},@map2,@<text>
[{"link":"@venLink.Link",
"title":"@locationName",
"img":"@popupImage",
"icon":"@tileIcon",
"time":"@tileTime"}]
</text>);
}
@*This is called at the end of the razor page*@
<script>
terratype.onRender(function (provider, map) {
map._markerclusterer.setMaxZoom(1);
map._markerclusterer.setGridSize(1);
map._markerclusterer.redraw();
})
</script>
This probably looks like a mess, as the terratype along with various other properties are nested content, so I used IPublishedContent to loop through each instance.
I've just tested your code and other than your three lines of js (map._markerclusterer) seems to stop the Clustering from doing its job, I get no errors with it. eg. Setting the Icon Url yourself works for me, using Json in the Label works for me, The javascript you have works for me.
What version of Terratype you using, as the js library was released in version 1.0.15
Otherwise maybe check that terratype.renderer.min.js is loading and running correctly - no errors.
Check using Chrome debugger if there is a window.terratype object created after the above script file runs.
Without something more to go on, I'm at a bit of a loss.
As you don't seem to know what version you are using, I'm gonna guess that this is our issue. Can you update to the latest version please.
On a side note, Terratype doesn't come with any version of Umbraco, you might have installed it when you installed a starter kit, without knowing which starter kit you installed it would be tough for me to guess.
Perfect, that's what I'll do. I just had a look and it seems we installed the Umbraco starter kit here: https://github.com/umbraco/The-Starter-Kit. Apologies for wasting your time.
Uncaught reference error: terratype is not defined
Hi,
I've recently started using your package and was wanting to play about with the clusterer settings using terratype.onRender. However when I load the page with the map, I receive the Uncaught ReferenceError: terratype is not defined.
The website currently uses Umbraco v7.12.4
Thank you for your time,
Connor Forsyth
Hi Connor,
I suspect you are trying to access the js object
terratype
before it has been defined. It gets loaded, the first time you call the@Html.Terratype
in your razor page.To give an Razor example to make it clear
Hope this helps
Jonathan
Hi Jonathan,
Sorry for the slow reply,
I called the terratype.onRender after I defined the terratype but couldn't get it working.
This probably looks like a mess, as the terratype along with various other properties are nested content, so I used IPublishedContent to loop through each instance.
Thank you for your time,
Connor Forsyth
Hi Connor,
I've just tested your code and other than your three lines of js (
map._markerclusterer
) seems to stop the Clustering from doing its job, I get no errors with it. eg. Setting the Icon Url yourself works for me, using Json in the Label works for me, The javascript you have works for me.What version of Terratype you using, as the js library was released in version 1.0.15
Otherwise maybe check that terratype.renderer.min.js is loading and running correctly - no errors.
Check using Chrome debugger if there is a
window.terratype
object created after the above script file runs.Without something more to go on, I'm at a bit of a loss.
Sorry
Jonathan
Hi Jonathan,
I apologize, I really haven't given you much useful information, I'm using the version of Terratype that is included with Umbraco (v7.12.4).
I encased the terratype.onRender inside the if statement and it returned the with the console log.
Again, thank you for your time,
Connor Forsyth
Hi Connor,
As you don't seem to know what version you are using, I'm gonna guess that this is our issue. Can you update to the latest version please.
On a side note, Terratype doesn't come with any version of Umbraco, you might have installed it when you installed a starter kit, without knowing which starter kit you installed it would be tough for me to guess.
Cheers
Jonathan
Hi Jonathan,
Perfect, that's what I'll do. I just had a look and it seems we installed the Umbraco starter kit here: https://github.com/umbraco/The-Starter-Kit. Apologies for wasting your time.
Thank you for your help,
Connor Forsyth
is working on a reply...